功能增强:新增材料员确认功能及分公司权限过滤相关改造
This commit is contained in:
parent
488cab504c
commit
ea56bf273b
|
|
@ -175,6 +175,9 @@ public class LeaseApplyInfo extends BaseEntity{
|
|||
@ApiModelProperty(value = "任务类型(定义数据字典)")
|
||||
private Integer taskType;
|
||||
|
||||
@ApiModelProperty(value = "任务所属分公司id")
|
||||
private Long taskDeptId;
|
||||
|
||||
/** 任务状态(定义数据字典) */
|
||||
@ApiModelProperty(value = "任务状态(定义数据字典)")
|
||||
private Integer taskStatus;
|
||||
|
|
@ -198,6 +201,18 @@ public class LeaseApplyInfo extends BaseEntity{
|
|||
@ApiModelProperty(value = "工程id")
|
||||
private Long projectId;
|
||||
|
||||
@ApiModelProperty(value = "材料员确认账号")
|
||||
private String materialMan;
|
||||
|
||||
@ApiModelProperty(value = "材料员确认时间")
|
||||
private String confirmTime;
|
||||
|
||||
@ApiModelProperty(value = "是否确认 0不需要确认,1未确认 2已确认")
|
||||
private Integer isConfirm;
|
||||
|
||||
@ApiModelProperty(value = "材料员确认备注")
|
||||
private String confirmRemark;
|
||||
|
||||
/**
|
||||
* 工程名称
|
||||
*/
|
||||
|
|
@ -287,7 +302,6 @@ public class LeaseApplyInfo extends BaseEntity{
|
|||
@ApiModelProperty(value = "流程节点签名方式 0:或签 1:会签")
|
||||
private Integer nodeSignType;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "发布批次")
|
||||
private String publishTask;
|
||||
|
||||
|
|
|
|||
|
|
@ -149,4 +149,14 @@ public class BmProject extends BaseEntity
|
|||
|
||||
@ApiModelProperty(value = "往来单位ids")
|
||||
private int[] unitIds;
|
||||
|
||||
/**
|
||||
* 分公司id
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 是否开启分公司过滤
|
||||
*/
|
||||
private Boolean enableFilter;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,4 +88,9 @@ public class BmUnit extends BaseEntity
|
|||
@ApiModelProperty(value = "工程id")
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 是否过滤分公司(true 过滤,默认不过滤)
|
||||
*/
|
||||
private Boolean enableFilter;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package com.bonus.material.basic.domain.dto;
|
||||
|
||||
import com.bonus.system.api.domain.SysUserRole;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @author : 阮世耀
|
||||
* @version : 1.0
|
||||
* @PackagePath: com.bonus.material.basic.domain.dto
|
||||
* @CreateTime: 2025-06-18 16:00
|
||||
* @Description: 描述
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class SysUserRoleVo extends SysUserRole {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String userName;
|
||||
|
||||
private String roleName;
|
||||
|
||||
private Long deptId;
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.bonus.material.basic.mapper;
|
||||
|
||||
import com.bonus.material.basic.domain.dto.SysUserRoleVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author : 阮世耀
|
||||
* @version : 1.0
|
||||
* @PackagePath: com.bonus.material.basic.mapper
|
||||
* @CreateTime: 2025-06-18 15:57
|
||||
* @Description: 用户角色mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface BmUserRoleMapper {
|
||||
|
||||
/**
|
||||
* 查询分公司内的某个角色的所有用户
|
||||
* @param deptId 分公司id
|
||||
* @param roleId 角色id
|
||||
* @return List<SysUserRoleVo>
|
||||
*/
|
||||
List<SysUserRoleVo> getUserRoleListByDeptId(@Param("deptId") Long deptId, @Param("roleId") Long roleId);
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.bonus.material.common.service.impl;
|
|||
|
||||
import com.bonus.common.biz.domain.*;
|
||||
import com.bonus.common.core.web.domain.AjaxResult;
|
||||
import com.bonus.common.security.utils.SecurityUtils;
|
||||
import com.bonus.material.back.domain.BackApplyInfo;
|
||||
import com.bonus.material.basic.domain.BmProject;
|
||||
import com.bonus.material.basic.domain.BmUnit;
|
||||
|
|
@ -10,13 +11,12 @@ import com.bonus.material.common.domain.vo.AgreementVo;
|
|||
import com.bonus.material.common.domain.vo.SelectVo;
|
||||
import com.bonus.material.common.mapper.SelectMapper;
|
||||
import com.bonus.material.common.service.SelectService;
|
||||
import com.bonus.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -37,6 +37,16 @@ public class SelectServiceImpl implements SelectService {
|
|||
*/
|
||||
@Override
|
||||
public AjaxResult getUnitList(BmUnit bmUnit) {
|
||||
// 获取登陆用户的组织ID
|
||||
Long thisLoginUserDeptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
|
||||
if (null == thisLoginUserDeptId || 0 == thisLoginUserDeptId) {
|
||||
return AjaxResult.success(Collections.emptyList());
|
||||
}
|
||||
// 判断是否开启过滤
|
||||
if (Objects.nonNull(bmUnit) && Objects.nonNull(bmUnit.getEnableFilter()) && bmUnit.getEnableFilter()) {
|
||||
bmUnit.setDeptId(thisLoginUserDeptId);
|
||||
}
|
||||
|
||||
if (bmUnit.getIsApp() != null && bmUnit.getIsApp()) {
|
||||
List<BmUnit> list = mapper.getUnitListApp(bmUnit);
|
||||
return AjaxResult.success(list);
|
||||
|
|
@ -69,6 +79,17 @@ public class SelectServiceImpl implements SelectService {
|
|||
list.removeIf(Objects::isNull);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
// 获取登陆用户的组织ID
|
||||
Long thisLoginUserDeptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
|
||||
if (null == thisLoginUserDeptId || 0 == thisLoginUserDeptId) {
|
||||
return AjaxResult.success(Collections.emptyList());
|
||||
}
|
||||
// 判断是否开启过滤
|
||||
if (Objects.nonNull(bmProject) && Objects.nonNull(bmProject.getEnableFilter()) && bmProject.getEnableFilter()) {
|
||||
bmProject.setDeptId(thisLoginUserDeptId);
|
||||
}
|
||||
|
||||
List<ProjectTreeNode> groupList = new ArrayList<>();
|
||||
List<ProjectTreeNode> list = new ArrayList<>();
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.bonus.material.lease.controller;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.bonus.common.biz.annotation.StoreLog;
|
||||
import com.bonus.common.biz.config.ListPagingUtil;
|
||||
import com.bonus.common.biz.domain.lease.LeaseOutDetails;
|
||||
|
|
@ -10,7 +9,6 @@ import com.bonus.common.core.utils.poi.ExcelUtil;
|
|||
import com.bonus.common.core.web.controller.BaseController;
|
||||
import com.bonus.common.core.web.domain.AjaxResult;
|
||||
import com.bonus.common.log.annotation.SysLog;
|
||||
import com.bonus.common.log.enums.BusinessType;
|
||||
import com.bonus.common.log.enums.OperaType;
|
||||
import com.bonus.material.archives.service.ArchivesService;
|
||||
import com.bonus.material.basic.domain.BmQrcodeInfo;
|
||||
|
|
@ -21,16 +19,16 @@ import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
|
|||
import com.bonus.common.biz.domain.lease.LeaseOutRequestVo;
|
||||
import com.bonus.material.lease.service.ILeaseApplyInfoService;
|
||||
import com.bonus.system.api.RemoteFileService;
|
||||
import com.bonus.system.api.domain.SysFile;
|
||||
import com.google.gson.JsonObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -67,6 +65,27 @@ public class LeaseApplyInfoController extends BaseController {
|
|||
return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已完成出库的任务
|
||||
*/
|
||||
@ApiOperation(value = "查询已完成出库的任务")
|
||||
//@RequiresPermissions("lease:info:list")
|
||||
@GetMapping("/getCompleteOutTaskList")
|
||||
public AjaxResult getCompleteOutTaskList(LeaseApplyInfo leaseApplyInfo) {
|
||||
Integer pageIndex = Convert.toInt(ServletUtils.getParameter("pageNum"), 1);
|
||||
Integer pageSize = Convert.toInt(ServletUtils.getParameter("pageSize"), 10);
|
||||
List<LeaseApplyInfo> list = leaseApplyInfoService.getCompleteOutTaskList(leaseApplyInfo);
|
||||
return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "材料员确认接口")
|
||||
@PostMapping("/confirmMaterial")
|
||||
public AjaxResult confirmMaterial(@RequestBody LeaseApplyInfo leaseApplyInfo) {
|
||||
int confirmResult = leaseApplyInfoService.confirmLeaseTask(leaseApplyInfo.getId().toString(), leaseApplyInfo.getIsConfirm(),
|
||||
leaseApplyInfo.getConfirmRemark());
|
||||
return confirmResult > 0 ? success("确认成功") : error("确认失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传领料单PDF文件
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
package com.bonus.material.lease.mapper;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 领料任务Mapper接口
|
||||
|
|
@ -47,6 +49,16 @@ public interface LeaseApplyInfoMapper {
|
|||
*/
|
||||
int updateLeaseApplyInfoSign(LeaseApplyInfo leaseApplyInfo);
|
||||
|
||||
/**
|
||||
* 材料员确认
|
||||
* @param id
|
||||
* @param isConfirm
|
||||
* @param confirmTime
|
||||
* @param confirmRemark
|
||||
* @return
|
||||
*/
|
||||
int confirmLeaseTask(@Param("id") String id,@Param("isConfirm") Integer isConfirm,@Param("materialMan") Long materialMan,@Param("confirmTime") Date confirmTime, @Param("confirmRemark") String confirmRemark);
|
||||
|
||||
/**
|
||||
* 删除领料任务
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.bonus.material.lease.service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.bonus.common.biz.domain.lease.LeaseOutDetails;
|
||||
|
|
@ -9,6 +10,7 @@ import com.bonus.material.basic.domain.BmQrcodeInfo;
|
|||
import com.bonus.material.lease.domain.LeaseApplyDetails;
|
||||
import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
|
||||
import com.bonus.common.biz.domain.lease.LeaseOutRequestVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
|
@ -38,6 +40,25 @@ public interface ILeaseApplyInfoService {
|
|||
*/
|
||||
List<LeaseApplyInfo> selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo);
|
||||
|
||||
/**
|
||||
* 材料员确认service
|
||||
* @param id
|
||||
* @param isConfirm
|
||||
* @param confirmRemark
|
||||
* @return
|
||||
*/
|
||||
int confirmLeaseTask(@Param("id") String id, @Param("isConfirm") Integer isConfirm, @Param("confirmRemark") String confirmRemark);
|
||||
|
||||
|
||||
/**
|
||||
* 查询已完成出库任务
|
||||
*
|
||||
* @param leaseApplyInfo 领料任务
|
||||
* @return 领料任务集合
|
||||
*/
|
||||
List<LeaseApplyInfo> getCompleteOutTaskList(LeaseApplyInfo leaseApplyInfo);
|
||||
|
||||
|
||||
/**
|
||||
* 新增领料任务
|
||||
*
|
||||
|
|
|
|||
|
|
@ -230,6 +230,85 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
|
|||
return sortedList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 材料员确认service
|
||||
*
|
||||
* @param id
|
||||
* @param isConfirm
|
||||
* @param confirmRemark
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public int confirmLeaseTask(String id, Integer isConfirm, String confirmRemark) {
|
||||
return leaseApplyInfoMapper.confirmLeaseTask(id, isConfirm, SecurityUtils.getUserId(), new Date(), confirmRemark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已完成出库任务
|
||||
*
|
||||
* @param leaseApplyInfo 领料任务
|
||||
* @return 领料任务集合
|
||||
*/
|
||||
@Override
|
||||
public List<LeaseApplyInfo> getCompleteOutTaskList(LeaseApplyInfo leaseApplyInfo) {
|
||||
leaseApplyInfo.setUserId(SecurityUtils.getUserId());
|
||||
List<LeaseApplyInfo> list = leaseApplyInfoMapper.selectLeaseApplyInfoList(leaseApplyInfo);
|
||||
// 如果statusList包含3、4、5,则为领料出库查询,需查询领用出库数据,进行拼接
|
||||
if (!CollectionUtils.isEmpty(leaseApplyInfo.getStatusList())) {
|
||||
if (leaseApplyInfo.getStatusList().contains(4)) {
|
||||
// 查询领用出库数据
|
||||
List<LeaseApplyInfo> leaseApplyOutList = leaseApplyInfoMapper.selectPublishList(leaseApplyInfo);
|
||||
if (!CollectionUtils.isEmpty(leaseApplyOutList)) {
|
||||
for (LeaseApplyInfo applyInfo : leaseApplyOutList) {
|
||||
if (applyInfo.getPreCountNum().compareTo(applyInfo.getAlNum()) == 0) {
|
||||
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus());
|
||||
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatusName());
|
||||
} else {
|
||||
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatus());
|
||||
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatusName());
|
||||
}
|
||||
}
|
||||
list.addAll(leaseApplyOutList);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 使用 Stream API 进行降序排序
|
||||
List<LeaseApplyInfo> sortedList = list.stream()
|
||||
.sorted(Comparator.comparing(LeaseApplyInfo::getCreateTime).reversed())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!CollectionUtils.isEmpty(sortedList)) {
|
||||
String keyWord = leaseApplyInfo.getKeyWord();
|
||||
// 如果关键字不为空,进行过滤
|
||||
if (!StringUtils.isBlank(keyWord)) {
|
||||
sortedList = sortedList.stream()
|
||||
.filter(item -> containsKeyword(item, keyWord))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
// 判断状态
|
||||
if (!CollectionUtils.isEmpty(leaseApplyInfo.getStatusList())) {
|
||||
// 将集合sortedList中状态taskStatus包含在leaseApplyInfo.getStatusList()中的元素
|
||||
sortedList = sortedList.stream()
|
||||
.filter(item -> leaseApplyInfo.getStatusList().contains(item.getTaskStatus()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
sortedList.removeIf(Objects::isNull);
|
||||
if (leaseApplyInfo.getIsConfirm() != null) {
|
||||
if (leaseApplyInfo.getIsConfirm() == 1) {
|
||||
sortedList.removeIf(item -> item.getIsConfirm() != null && item.getIsConfirm() == 2);
|
||||
} else if (leaseApplyInfo.getIsConfirm() == 2) {
|
||||
sortedList.removeIf(item -> item.getIsConfirm() == null || item.getIsConfirm() != 2);
|
||||
}
|
||||
}
|
||||
// 再次移除可能的null值
|
||||
sortedList.removeIf(Objects::isNull);
|
||||
// 只有出库完成的任务才需要进行确认,这里过滤掉任务状态不等于4(出库已完成)的
|
||||
sortedList.removeIf(item -> item.getTaskStatus() != 4);
|
||||
|
||||
return sortedList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键字搜索
|
||||
* @param item
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ import com.bonus.common.core.utils.bean.BeanUtils;
|
|||
import com.bonus.common.core.web.domain.AjaxResult;
|
||||
import com.bonus.common.security.utils.SecurityUtils;
|
||||
import com.bonus.material.back.domain.vo.MaCodeVo;
|
||||
import com.bonus.material.basic.domain.dto.SysUserRoleVo;
|
||||
import com.bonus.material.basic.mapper.BmFileInfoMapper;
|
||||
import com.bonus.material.basic.mapper.BmUserRoleMapper;
|
||||
import com.bonus.material.lease.domain.LeaseApplyDetails;
|
||||
import com.bonus.material.lease.domain.LeasePublishDetails;
|
||||
import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
|
||||
|
|
@ -32,8 +34,10 @@ import com.bonus.material.ma.domain.vo.MaTypeVoLevelTwo;
|
|||
import com.bonus.material.task.domain.TmTask;
|
||||
import com.bonus.material.task.mapper.TmTaskAgreementMapper;
|
||||
import com.bonus.material.task.mapper.TmTaskMapper;
|
||||
import com.bonus.material.work.domain.SysWorkflowConfig;
|
||||
import com.bonus.material.work.domain.SysWorkflowNode;
|
||||
import com.bonus.material.work.domain.SysWorkflowRecordHistory;
|
||||
import com.bonus.material.work.domain.SysWorkflowType;
|
||||
import com.bonus.material.work.mapper.*;
|
||||
import com.bonus.material.work.service.SysWorkflowRecordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -86,6 +90,9 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
@Resource
|
||||
private SysWorkflowNodeMapper sysWorkflowNodeMapper;
|
||||
|
||||
@Resource
|
||||
private BmUserRoleMapper bmUserRoleMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 新增领用任务
|
||||
|
|
@ -103,26 +110,27 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
return AjaxResult.error("请先添加领用任务物资明细");
|
||||
}
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().setCreateTime(DateUtils.getNowDate());
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
|
||||
Long userId = SecurityUtils.getLoginUser().getUserid();
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().setCreateBy(SecurityUtils.getUsername());
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().setTaskDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
Long deptId = mapper.getDeptIdByUserId(userId);
|
||||
LeaseDeptInfo leaseDeptInfo = new LeaseDeptInfo();
|
||||
leaseDeptInfo = mapper.getDeptIdByParentId(deptId);
|
||||
Long parentIdTemp = leaseDeptInfo.getParentId();
|
||||
String deptName = "";
|
||||
while (leaseDeptInfo != null) {
|
||||
while (Objects.nonNull(leaseDeptInfo)) {
|
||||
parentIdTemp = leaseDeptInfo.getParentId();
|
||||
String ancestors = leaseDeptInfo.getAncestors();
|
||||
if (ancestors != null && StringUtils.countMatches(ancestors, ",") < 1) {
|
||||
if (null != ancestors && StringUtils.countMatches(ancestors, ",") < 1) {
|
||||
break;
|
||||
}
|
||||
if (ancestors != null && StringUtils.countMatches(ancestors, ",") == 1) {
|
||||
if (null != ancestors && StringUtils.countMatches(ancestors, ",") == 1) {
|
||||
deptName = leaseDeptInfo.getDeptName();
|
||||
break;
|
||||
}
|
||||
leaseDeptInfo = mapper.getDeptIdByParentId(parentIdTemp);
|
||||
}
|
||||
if(!deptName.equals("")){
|
||||
if(!"".equals(deptName)){
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().setCompanyId(leaseDeptInfo.getDeptId());
|
||||
}
|
||||
try {
|
||||
|
|
@ -141,12 +149,9 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
taskStatus,
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().getCompanyId(),thisMonthMaxOrder + 1, taskCode);
|
||||
tmTask.setCreateTime(DateUtils.getNowDate());
|
||||
tmTask.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
|
||||
tmTask.setCreateBy(SecurityUtils.getUsername());
|
||||
tmTask.setTaskDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
|
||||
tmTaskMapper.insertTmTask(tmTask);
|
||||
// TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), leaseApplyRequestVo.getLeaseApplyInfo().getAgreementId());
|
||||
// tmTaskAgreement.setCreateTime(DateUtils.getNowDate());
|
||||
// tmTaskAgreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
|
||||
// tmTaskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement);
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().setTaskId(tmTask.getTaskId());
|
||||
leaseApplyRequestVo.getLeaseApplyInfo().setCode(taskCode);
|
||||
|
||||
|
|
@ -167,8 +172,8 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
bmFileInfoMapper.insertBmFileInfo(bmFileInfo);
|
||||
});
|
||||
}
|
||||
if(statusFlag!= null && statusFlag == 0){
|
||||
newId = sysWorkflowRecordService.addSysWorkflowRecord(tmTask.getTaskId().intValue(),taskCode,19);
|
||||
if (statusFlag!= null && statusFlag == 0) {
|
||||
newId = sysWorkflowRecordService.addSysWorkflowRecord(tmTask.getTaskId().intValue(),taskCode,19);
|
||||
}
|
||||
if (count > 0) {
|
||||
if (statusFlag!= null && statusFlag == 0) {
|
||||
|
|
@ -446,7 +451,7 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
}
|
||||
for (LeaseApplyInfo leaseApplyInfoNew : list) {
|
||||
//获取当前节点,并根据当前节点获取审核人审核的角色信息
|
||||
if (leaseApplyInfoNew.getNodeId()!=null){
|
||||
if (leaseApplyInfoNew.getNodeId() != null) {
|
||||
log.info("当前节点为{}",leaseApplyInfoNew.getNodeId());
|
||||
SysWorkflowRecordHistory sysWorkflowRecordHistory = sysWorkflowRecordHistoryMapper.getWorkflowRecordHistoryByRecordId(leaseApplyInfoNew.getRecordId());
|
||||
leaseApplyInfoNew.setNodeId(sysWorkflowRecordHistory.getNodeId());
|
||||
|
|
@ -460,16 +465,42 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
//判断当前节点是否审核
|
||||
sysWorkflowRecordHistory.setRecordId(leaseApplyInfoNew.getRecordId());
|
||||
sysWorkflowRecordHistory.setNodeId(leaseApplyInfoNew.getNodeId());
|
||||
List<SysWorkflowRecordHistory> SysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
|
||||
List<SysWorkflowRecordHistory> SysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
|
||||
//判断是或签还是会签0:或签 1:会签
|
||||
if (0==sysWorkflowNode.getNodeSignType()){
|
||||
//当前节点已经审核需要修改节点值
|
||||
if (SysWorkflowRecordHistoryList.get(0)!=null){
|
||||
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
leaseApplyInfoNew.setNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
leaseApplyInfoNew.setConfigValue(configValueNew);
|
||||
if (SysWorkflowRecordHistoryList.get(0) != null) {
|
||||
// todo 固定的人员id 修改成 判断人员/角色 如果是人员的话要进行二次查询
|
||||
// String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
// leaseApplyInfoNew.setNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
// leaseApplyInfoNew.setConfigValue(configValueNew);
|
||||
SysWorkflowConfig nextNodeConfigValueInfoNew = sysWorkflowConfigMapper.selectConfigValueInfoByNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
if (nextNodeConfigValueInfoNew != null) {
|
||||
leaseApplyInfoNew.setNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
// 0:角色 1:用户
|
||||
if (nextNodeConfigValueInfoNew.getConfigType() == 1) {
|
||||
leaseApplyInfoNew.setConfigValue(nextNodeConfigValueInfoNew.getConfigValue());
|
||||
} else if (nextNodeConfigValueInfoNew.getConfigType() == 0) {
|
||||
if (nextNodeConfigValueInfoNew.getRoleIds() != null) {
|
||||
String[] roleIds = nextNodeConfigValueInfoNew.getRoleIds().split(",");
|
||||
List<Long> configUserIds = new ArrayList<>();
|
||||
for (String roleId : roleIds) {
|
||||
if (roleId == null || roleId.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
List<SysUserRoleVo> userRoleList = bmUserRoleMapper.getUserRoleListByDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId(), Long.valueOf(roleId));
|
||||
if (!userRoleList.isEmpty()) {
|
||||
configUserIds.addAll(
|
||||
userRoleList.stream().filter(Objects::nonNull).map(SysUserRoleVo::getUserId).collect(Collectors.toList())
|
||||
);
|
||||
}
|
||||
}
|
||||
leaseApplyInfoNew.setConfigValue(configUserIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
String[] ConfigValue = configValue.split(",");
|
||||
List<String> filteredList = Arrays.stream(ConfigValue).collect(Collectors.toList());
|
||||
for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : SysWorkflowRecordHistoryList) {
|
||||
|
|
@ -482,12 +513,12 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
}
|
||||
}
|
||||
//判断是否这个节点的所有人都审核
|
||||
if (filteredList.size()==0){
|
||||
if (filteredList.isEmpty()){
|
||||
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
leaseApplyInfoNew.setNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());
|
||||
leaseApplyInfoNew.setConfigValue(configValueNew);
|
||||
}else {
|
||||
if (SysWorkflowRecordHistoryList.size()>0){
|
||||
if (!SysWorkflowRecordHistoryList.isEmpty()){
|
||||
leaseApplyInfoNew.setNodeId(leaseApplyInfoNew.getNodeId());
|
||||
leaseApplyInfoNew.setConfigValue(filteredList.toString());
|
||||
}
|
||||
|
|
@ -495,8 +526,9 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
}
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
log.info("查询失败",e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ public class TmTask extends BaseEntity {
|
|||
@ApiModelProperty(value = "任务类型(定义数据字典)")
|
||||
private Integer taskType;
|
||||
|
||||
@ApiModelProperty(value = "任务所属分公司id")
|
||||
private Long taskDeptId;
|
||||
|
||||
@ApiModelProperty(value = "领料分任务类型(定义数据字典)")
|
||||
private Integer splitType;
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,8 @@ public class TmTaskAuditLogServiceImpl implements ITmTaskAuditLogService {
|
|||
needRoles = bmConfigService.getBmConfigResultAsList(BmConfigItems.LEASE_TASK_AUDIT_ROLE_IDS);
|
||||
} else if (TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId().equals(tmTaskAuditLog.getTaskType())) {
|
||||
needRoles = bmConfigService.getBmConfigResultAsList(BmConfigItems.BACK_TASK_AUDIT_ROLE_IDS);
|
||||
} //TODO, add more tasks logic to get needRoles
|
||||
}
|
||||
//TODO, add more tasks logic to get needRoles
|
||||
|
||||
if (CollectionUtils.isEmpty(needRoles)) {
|
||||
return new TmTaskAuditResult(true);
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public class SysWorkflowRecordHisController extends BaseController {
|
|||
sysWorkflowRecordHistoryService.updateSysWorkflowRecordHistory(sysWorkflowRecordHistory);
|
||||
return new AjaxResult(200,"修改成功!");
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return error();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,11 @@ public class SysWorkflowNode {
|
|||
*/
|
||||
private String configValues;
|
||||
|
||||
/**
|
||||
* 配置值的类型 0角色 1用户
|
||||
*/
|
||||
private Integer configType;
|
||||
|
||||
/**
|
||||
* 任务Id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -13,4 +13,6 @@ public interface SysWorkflowConfigMapper {
|
|||
int deleteSysWorkflowConfig(SysWorkflowConfig sysWorkflowConfig);
|
||||
|
||||
String selectConfigValueByNodeId(Integer nodeId);
|
||||
|
||||
SysWorkflowConfig selectConfigValueInfoByNodeId(Integer nodeId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,4 +13,6 @@ public interface SysWorkflowRecordHistoryMapper {
|
|||
List<SysWorkflowRecordHistory> seleteSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory);
|
||||
|
||||
SysWorkflowRecordHistory getWorkflowRecordHistoryByRecordId(Integer recordId);
|
||||
|
||||
SysWorkflowRecordHistory getWorkFlowRecordNodeInfoByTaskId(Integer taskId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,4 +15,6 @@ public interface SysWorkflowNodeService {
|
|||
int updateSysWorkflowNode(SysWorkflowNode sysWorkflowNode);
|
||||
|
||||
List<SysWorkflowNode> listByTaskId(SysWorkflowNode sysWorkflowNode);
|
||||
|
||||
void copeNodeConfigPersonValuesByNode(SysWorkflowNode forSysWorkflowNode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@ package com.bonus.material.work.service.impl;
|
|||
|
||||
import com.bonus.common.core.exception.ServiceException;
|
||||
import com.bonus.common.core.utils.DateUtils;
|
||||
import com.bonus.common.core.utils.StringUtils;
|
||||
import com.bonus.common.security.utils.SecurityUtils;
|
||||
import com.bonus.material.basic.domain.dto.SysUserRoleVo;
|
||||
import com.bonus.material.basic.mapper.BmUserRoleMapper;
|
||||
import com.bonus.material.work.domain.SysWorkflowConfig;
|
||||
import com.bonus.material.work.domain.SysWorkflowNode;
|
||||
import com.bonus.material.work.domain.SysWorkflowRecordHistory;
|
||||
|
|
@ -31,6 +32,9 @@ public class SysWorkflowNodeServiceImpl implements SysWorkflowNodeService {
|
|||
@Resource
|
||||
private SysWorkflowRecordHistoryMapper sysWorkflowRecordHistoryMapper;
|
||||
|
||||
@Resource
|
||||
private BmUserRoleMapper bmUserRoleMapper;
|
||||
|
||||
/**
|
||||
* 工作流详情列表
|
||||
*/
|
||||
|
|
@ -108,19 +112,22 @@ public class SysWorkflowNodeServiceImpl implements SysWorkflowNodeService {
|
|||
public List<SysWorkflowNode> listByTaskId(SysWorkflowNode sysWorkflowNode) {
|
||||
Long userId = SecurityUtils.getLoginUser().getUserid();
|
||||
List<SysWorkflowNode> sysWorkflowNodeList = sysWorkflowNodeMapper.listByTaskId(sysWorkflowNode);
|
||||
for (SysWorkflowNode SysWorkflowNode: sysWorkflowNodeList) {
|
||||
for (SysWorkflowNode forSysWorkflowNode : sysWorkflowNodeList) {
|
||||
// 传入节点信息,自动处理节点配置角色相关的处理
|
||||
copeNodeConfigPersonValuesByNode(forSysWorkflowNode);
|
||||
|
||||
SysWorkflowRecordHistory sysWorkflowRecordHistory = new SysWorkflowRecordHistory();
|
||||
sysWorkflowRecordHistory.setRecordId(SysWorkflowNode.getRecordId());
|
||||
sysWorkflowRecordHistory.setNodeId(SysWorkflowNode.getNodeId());
|
||||
sysWorkflowRecordHistory.setRecordId(forSysWorkflowNode.getRecordId());
|
||||
sysWorkflowRecordHistory.setNodeId(forSysWorkflowNode.getNodeId());
|
||||
List<SysWorkflowRecordHistory> sysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
|
||||
if (sysWorkflowRecordHistoryList.size()>0){
|
||||
if (!sysWorkflowRecordHistoryList.isEmpty()) {
|
||||
//判断是或签还是会签0:或签 1:会签
|
||||
if (0==SysWorkflowNode.getNodeSignType()){
|
||||
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryList.get(0).getIsAccept());
|
||||
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryList.get(0).getCreateTime());
|
||||
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryList.get(0).getRemark());
|
||||
}else {
|
||||
String[] configValue = SysWorkflowNode.getConfigValues().split(",");
|
||||
if (0 == forSysWorkflowNode.getNodeSignType()) {
|
||||
forSysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryList.get(0).getIsAccept());
|
||||
forSysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryList.get(0).getCreateTime());
|
||||
forSysWorkflowNode.setRemark(sysWorkflowRecordHistoryList.get(0).getRemark());
|
||||
} else {
|
||||
String[] configValue = forSysWorkflowNode.getConfigValues().split(",");
|
||||
List<String> filteredList = Arrays.stream(configValue).collect(Collectors.toList());
|
||||
// 过滤数组元素
|
||||
for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : sysWorkflowRecordHistoryList) {
|
||||
|
|
@ -134,28 +141,28 @@ public class SysWorkflowNodeServiceImpl implements SysWorkflowNodeService {
|
|||
.map(SysWorkflowRecordHistory::getIsAccept)
|
||||
.collect(Collectors.toList());
|
||||
//判断是否有人是驳回
|
||||
if(isAcceptList.contains(2)){
|
||||
if (isAcceptList.contains(2)) {
|
||||
//获取驳回信息
|
||||
List<SysWorkflowRecordHistory> sysWorkflowRecordHistoryListNew = sysWorkflowRecordHistoryList.stream()
|
||||
.filter(value ->value != null && 2==(value.getIsAccept()))
|
||||
.filter(value ->value != null && 2 == (value.getIsAccept()))
|
||||
.collect(Collectors.toList());
|
||||
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryListNew.get(0).getIsAccept());
|
||||
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryListNew.get(0).getCreateTime());
|
||||
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryListNew.get(0).getRemark());
|
||||
}else {
|
||||
//获取当前人的审核信息
|
||||
forSysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryListNew.get(0).getIsAccept());
|
||||
forSysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryListNew.get(0).getCreateTime());
|
||||
forSysWorkflowNode.setRemark(sysWorkflowRecordHistoryListNew.get(0).getRemark());
|
||||
} else {
|
||||
// 获取当前人的审核信息
|
||||
List<SysWorkflowRecordHistory> sysWorkflowRecordHistoryListNew = sysWorkflowRecordHistoryList.stream()
|
||||
.filter(value ->value != null && userId.toString().equals(value.getCreateBy()))
|
||||
.filter(value -> value != null && userId.toString().equals(value.getCreateBy()))
|
||||
.collect(Collectors.toList());
|
||||
//判断当前人是否是这个节点的审核人
|
||||
if (!sysWorkflowRecordHistoryListNew.isEmpty()){
|
||||
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryListNew.get(0).getIsAccept());
|
||||
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryListNew.get(0).getCreateTime());
|
||||
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryListNew.get(0).getRemark());
|
||||
}else {
|
||||
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryList.get(0).getIsAccept());
|
||||
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryList.get(0).getCreateTime());
|
||||
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryList.get(0).getRemark());
|
||||
// 判断当前人是否是这个节点的审核人
|
||||
if (!sysWorkflowRecordHistoryListNew.isEmpty()) {
|
||||
forSysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryListNew.get(0).getIsAccept());
|
||||
forSysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryListNew.get(0).getCreateTime());
|
||||
forSysWorkflowNode.setRemark(sysWorkflowRecordHistoryListNew.get(0).getRemark());
|
||||
} else {
|
||||
forSysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryList.get(0).getIsAccept());
|
||||
forSysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryList.get(0).getCreateTime());
|
||||
forSysWorkflowNode.setRemark(sysWorkflowRecordHistoryList.get(0).getRemark());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -163,4 +170,28 @@ public class SysWorkflowNodeServiceImpl implements SysWorkflowNodeService {
|
|||
}
|
||||
return sysWorkflowNodeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据传入的节点配置,去自动判断是否配置角色,如果是角色 那么自动查询并赋值进入节点的configValues字段
|
||||
* @param forSysWorkflowNode 节点信息
|
||||
*/
|
||||
@Override
|
||||
public void copeNodeConfigPersonValuesByNode(SysWorkflowNode forSysWorkflowNode) {
|
||||
// 判断配置的类型
|
||||
if (forSysWorkflowNode.getConfigType() == null || forSysWorkflowNode.getConfigType() == 0) {
|
||||
// 如果配置的是角色,那么要根据角色id去查询有哪些用户
|
||||
String roleIds = forSysWorkflowNode.getRoleIds();
|
||||
if (roleIds != null && !roleIds.isEmpty()) {
|
||||
StringBuilder roleConfigValues = new StringBuilder();
|
||||
String[] roleIdArray = roleIds.split(",");
|
||||
for (String forRoleId : roleIdArray) {
|
||||
List<SysUserRoleVo> userList = bmUserRoleMapper.getUserRoleListByDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId(), Long.valueOf(forRoleId));
|
||||
if (!userList.isEmpty()) {
|
||||
roleConfigValues.append(userList.stream().map(user -> String.valueOf(user.getUserId())).collect(Collectors.joining(",")));
|
||||
}
|
||||
}
|
||||
forSysWorkflowNode.setConfigValues(String.valueOf(roleConfigValues));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import com.bonus.material.work.domain.SysWorkflowRecord;
|
|||
import com.bonus.material.work.domain.SysWorkflowRecordHistory;
|
||||
import com.bonus.material.work.domain.dto.SysWorkflowAuditDto;
|
||||
import com.bonus.material.work.mapper.*;
|
||||
import com.bonus.material.work.service.SysWorkflowNodeService;
|
||||
import com.bonus.material.work.service.SysWorkflowRecordHistoryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -98,6 +99,9 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
@Resource
|
||||
private TypeMapper typeMapper;
|
||||
|
||||
@Resource
|
||||
private SysWorkflowNodeService sysWorkflowNodeService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -106,19 +110,30 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int updateSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory) {
|
||||
// 前端传参不可信,由后端通过taskID重新查询审批节点
|
||||
// Integer theTaskId = sysWorkflowRecordHistory.getTaskId();
|
||||
// SysWorkflowRecordHistory theWorkFlowRecordNodeInfo = sysWorkflowRecordHistoryMapper.getWorkFlowRecordNodeInfoByTaskId(sysWorkflowRecordHistory.getTaskId());
|
||||
// if (theWorkFlowRecordNodeInfo != null) {
|
||||
// sysWorkflowRecordHistory.setNodeId(theWorkFlowRecordNodeInfo.getNodeId());
|
||||
// sysWorkflowRecordHistory.setNextNodeId(theWorkFlowRecordNodeInfo.getNextNodeId());
|
||||
// }
|
||||
|
||||
//保存审核人信息
|
||||
Long userId = SecurityUtils.getLoginUser().getUserid();
|
||||
sysWorkflowRecordHistory.setCreateBy(userId.toString());
|
||||
sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(sysWorkflowRecordHistory);
|
||||
//根据当前审批状态,修改流程状态
|
||||
if (sysWorkflowRecordHistory.getIsAccept()==1){
|
||||
if (sysWorkflowRecordHistory.getIsAccept() == 1) {
|
||||
SysWorkflowNode sysWorkflowNode = new SysWorkflowNode();
|
||||
sysWorkflowNode.setTypeId(sysWorkflowRecordHistory.getTypeId());
|
||||
List<SysWorkflowNode> sysWorkflowNodeList = sysWorkflowNodeMapper.selectSysWorkflowNodeList(sysWorkflowNode);
|
||||
int fly =0;
|
||||
|
||||
int fly = 0;
|
||||
for (int i = 0; i < sysWorkflowNodeList.size(); i++) {
|
||||
sysWorkflowNode = sysWorkflowNodeList.get(i);
|
||||
if (sysWorkflowRecordHistory.getNodeId().equals(sysWorkflowNode.getId())){
|
||||
// 自动处理节点配置角色后的相应查询
|
||||
sysWorkflowNodeService.copeNodeConfigPersonValuesByNode(sysWorkflowNode);
|
||||
if (sysWorkflowRecordHistory.getNodeId().equals(sysWorkflowNode.getId())) {
|
||||
//判断当前用户是否是这个节点审核人员
|
||||
if (sysWorkflowNode.getConfigValues().contains(SecurityUtils.getLoginUser().getUserid().toString())){
|
||||
SysWorkflowRecord sysWorkflowRecord = new SysWorkflowRecord();
|
||||
|
|
@ -131,13 +146,21 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
tmTaskMapper.updateTmTask(tmTask);
|
||||
System.out.println("-------------节点更新任务信息-------------");
|
||||
fly = i;
|
||||
}else {
|
||||
} else {
|
||||
throw new ServiceException("当前节点不在审核中");
|
||||
}
|
||||
}
|
||||
}
|
||||
//判断是否是最后一级
|
||||
if (sysWorkflowNodeList.get(sysWorkflowNodeList.size()-1).getId().equals(sysWorkflowRecordHistory.getNodeId())){
|
||||
// 判断是否是最后一级
|
||||
|
||||
// 先拿到NodeSort最大的一个节点对象
|
||||
Optional<SysWorkflowNode> maxWorkFlowNode = sysWorkflowNodeList.stream().max(Comparator.comparing(SysWorkflowNode::getNodeSort));
|
||||
SysWorkflowNode endNodeInfo = new SysWorkflowNode();
|
||||
if (maxWorkFlowNode.isPresent()) {
|
||||
endNodeInfo = maxWorkFlowNode.get();
|
||||
}
|
||||
|
||||
if (endNodeInfo.getId().equals(sysWorkflowRecordHistory.getNodeId()) && "2".equals(endNodeInfo.getNodeLabel())) {
|
||||
//判断最后节点是否所有人都审核完成
|
||||
sysWorkflowRecordHistory.setRecordId(sysWorkflowRecordHistory.getRecordId());
|
||||
sysWorkflowRecordHistory.setNodeId(sysWorkflowRecordHistory.getNodeId());
|
||||
|
|
@ -154,8 +177,9 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
filteredList = filteredList.stream()
|
||||
.filter(value ->value != null && !value.equals(sysWorkflowRecordHistoryNew.getCreateBy()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//判断是否这个节点的所有人都审核
|
||||
if ((filteredList.size()==0&& sysWorkflowNode.getNodeSignType()==1 )||sysWorkflowNode.getNodeSignType()==0){
|
||||
if ((filteredList.isEmpty() && sysWorkflowNode.getNodeSignType() == 1) || sysWorkflowNode.getNodeSignType() == 0) {
|
||||
SysWorkflowRecord sysWorkflowRecord = new SysWorkflowRecord();
|
||||
sysWorkflowRecord.setTaskId(sysWorkflowRecordHistory.getTaskId());
|
||||
sysWorkflowRecord.setWorkflowStatus(2);
|
||||
|
|
@ -261,7 +285,7 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
}
|
||||
}
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
SysWorkflowRecord sysWorkflowRecord = new SysWorkflowRecord();
|
||||
sysWorkflowRecord.setTaskId(sysWorkflowRecordHistory.getTaskId());
|
||||
sysWorkflowRecord.setWorkflowStatus(3);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.bonus.material.work.service.impl;
|
||||
|
||||
import com.bonus.common.biz.enums.TmTaskTypeEnum;
|
||||
import com.bonus.common.core.exception.ServiceException;
|
||||
import com.bonus.common.core.utils.DateUtils;
|
||||
import com.bonus.common.security.utils.SecurityUtils;
|
||||
|
|
@ -35,7 +36,7 @@ public class SysWorkflowRecordServiceImpl implements SysWorkflowRecordService {
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public int addSysWorkflowRecord(int taskId,String taskCode,int taskType) {
|
||||
public int addSysWorkflowRecord(int taskId, String taskCode, int taskType) {
|
||||
//获取审批流id
|
||||
SysWorkflowType sysWorkflowType = new SysWorkflowType();
|
||||
sysWorkflowType.setTaskType(taskType);
|
||||
|
|
@ -52,13 +53,25 @@ public class SysWorkflowRecordServiceImpl implements SysWorkflowRecordService {
|
|||
sysWorkflowRecord.setTaskCode(taskCode);
|
||||
//创建审批任务
|
||||
int count = sysWorkflowRecordMapper.addSysWorkflowRecord(sysWorkflowRecord);
|
||||
if (0 == count) {
|
||||
throw new RuntimeException("创建审批任务失败!");
|
||||
}
|
||||
// 获取新创建的ID
|
||||
int newId = sysWorkflowRecord.getId();
|
||||
//获取当前审核流下的节点
|
||||
SysWorkflowNode sysWorkflowNode = new SysWorkflowNode();
|
||||
sysWorkflowNode.setTypeId(sysWorkflowType.getId());
|
||||
List<SysWorkflowNode> sysWorkflowNodeList = sysWorkflowNodeMapper.selectSysWorkflowNodeList(sysWorkflowNode);
|
||||
//创建审核记录
|
||||
|
||||
/// 2025-06-17 syruan : 任务要查询下个节点待审核的人员存入数据库
|
||||
// 获取当前登陆用户id,查询所在的分公司
|
||||
Long thisLoginUserDeptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
|
||||
if (null == thisLoginUserDeptId) {
|
||||
thisLoginUserDeptId = 0L;
|
||||
}
|
||||
|
||||
|
||||
// 创建审核记录
|
||||
SysWorkflowRecordHistory sysWorkflowRecordHistory = new SysWorkflowRecordHistory();
|
||||
sysWorkflowRecordHistory.setRecordId(sysWorkflowRecord.getId());
|
||||
sysWorkflowRecordHistory.setNodeId(sysWorkflowNodeList.get(0).getId());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
<?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.bonus.material.basic.mapper.BmUserRoleMapper">
|
||||
|
||||
<select id="getUserRoleListByDeptId" resultType="com.bonus.material.basic.domain.dto.SysUserRoleVo">
|
||||
SELECT
|
||||
su.user_id as userId, su.user_name as userName, su.dept_id as deptId, sr.role_name as roleName, sr.role_id as roleId
|
||||
FROM
|
||||
sys_user su
|
||||
LEFT JOIN
|
||||
sys_user_role sur ON su.user_id = sur.user_id
|
||||
LEFT JOIN
|
||||
sys_role sr ON sur.role_id = sr.role_id
|
||||
WHERE su.dept_id = #{deptId} AND sr.role_id = #{roleId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -30,7 +30,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="projectId != null">
|
||||
AND bp.pro_id = #{projectId}
|
||||
</if>
|
||||
<if test="deptId != null">
|
||||
AND bu.dept_id = #{deptId}
|
||||
</if>
|
||||
|
||||
UNION
|
||||
|
||||
SELECT DISTINCT
|
||||
CONCAT( 'lx', bu.dept_id, '-', sda.dict_code ) AS id,
|
||||
sda.dict_label AS NAME,
|
||||
|
|
@ -51,6 +56,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="projectId != null">
|
||||
AND bp.pro_id = #{projectId}
|
||||
</if>
|
||||
<if test="deptId != null">
|
||||
AND bu.dept_id = #{deptId}
|
||||
</if>
|
||||
|
||||
UNION
|
||||
SELECT
|
||||
bu.unit_id AS id,
|
||||
|
|
@ -72,6 +81,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="projectId != null">
|
||||
AND bp.pro_id = #{projectId}
|
||||
</if>
|
||||
<if test="deptId != null">
|
||||
AND bu.dept_id = #{deptId}
|
||||
</if>
|
||||
) ff
|
||||
ORDER BY
|
||||
LEVEL
|
||||
|
|
@ -291,6 +303,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="unitId != null">
|
||||
AND bu.unit_id = #{unitId}
|
||||
</if>
|
||||
<if test="deptId != null">
|
||||
AND bu.dept_id = #{deptId}
|
||||
</if>
|
||||
UNION
|
||||
SELECT DISTINCT
|
||||
concat( 'gs', sd.dept_id ) AS id,
|
||||
|
|
@ -311,6 +326,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="unitId != null">
|
||||
AND bu.unit_id = #{unitId}
|
||||
</if>
|
||||
<if test="deptId != null">
|
||||
AND bu.dept_id = #{deptId}
|
||||
</if>
|
||||
) a
|
||||
ORDER BY
|
||||
level
|
||||
|
|
@ -325,12 +343,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
LEFT JOIN bm_agreement_info bai ON bpl.pro_id = bai.project_id AND bai.`status` = '1'
|
||||
LEFT JOIN bm_unit bu ON bai.unit_id = bu.unit_id AND bu.del_flag = '0'
|
||||
WHERE bpl.pro_id = #{projectId} AND bpl.del_flag = '0'
|
||||
<if test="deptId != null and deptId != 0">
|
||||
AND bpl.imp_unit = #{deptId}
|
||||
</if>
|
||||
</if>
|
||||
<if test="projectId == null">
|
||||
SELECT unit_id AS unitId,
|
||||
unit_name AS unitName
|
||||
FROM bm_unit
|
||||
WHERE del_flag = '0'
|
||||
<if test="deptId != null and deptId != 0">
|
||||
AND bpl.imp_unit = #{deptId}
|
||||
</if>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="agreementCode" column="agreement_code" />
|
||||
<result property="leaseSignUrl" column="lease_sign_url" />
|
||||
<result property="leaseSignType" column="lease_sign_type" />
|
||||
<result property="materialMan" column="material_man" />
|
||||
<result property="confirmTime" column="confirm_time" />
|
||||
<result property="isConfirm" column="is_confirm" />
|
||||
<result property="confirmRemark" column="confirm_remark" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectLeaseApplyInfoVo">
|
||||
|
|
@ -45,6 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
lai.dept_audit_remark, lai.direct_audit_by, lai.direct_audit_time, lai.direct_audit_remark,
|
||||
lai.create_by, lai.create_time, lai.update_by, lai.update_time, lai.remark, lai.company_id,
|
||||
lai.direct_id, lai.lease_type, lai.estimate_lease_time, lai.cost_bearing_party, lai.lease_sign_url, lai.lease_sign_type,
|
||||
lai.material_man, lai.confirm_time, lai.is_confirm, lai.confirm_remark,
|
||||
bai.unit_id,bai.project_id,bu.unit_name, bp.pro_name, bai.agreement_code, tt.task_status as taskStatus,
|
||||
sda.dict_label as taskStatusName,
|
||||
IFNULL(sum(lad.pre_num),0) as preCountNum,
|
||||
|
|
@ -340,4 +345,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
GROUP BY lai.id
|
||||
ORDER BY tt.task_status,tt.create_time desc
|
||||
</select>
|
||||
|
||||
<update id="confirmLeaseTask">
|
||||
update
|
||||
lease_apply_info
|
||||
set
|
||||
material_man = #{materialMan}, confirm_time = #{confirmTime}, is_confirm = #{isConfirm},
|
||||
confirm_remark = #{confirmRemark}
|
||||
where
|
||||
id = #{id}
|
||||
</update>
|
||||
</mapper>
|
||||
|
|
@ -582,7 +582,7 @@
|
|||
left join sys_workflow_config swc on swn.id = swc.node_id
|
||||
left join sys_workflow_record_history swrs on swr.id = swrs.record_id
|
||||
where 1=1
|
||||
<if test="userId != null and userId != ''">and swc.config_value LIKE CONCAT('%', #{userId}, '%')</if>
|
||||
<!-- <if test="userId != null and userId != ''">and swc.config_value LIKE CONCAT('%', #{userId}, '%')</if>-->
|
||||
<if test="code != null and code != ''">and lai.code = #{code}</if>
|
||||
<if test="taskId != null ">and lai.task_id = #{taskId}</if>
|
||||
<if test="leasePerson != null and leasePerson != ''">and lai.lease_person = #{leasePerson}</if>
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="preTaskId != null">pre_task_id,</if>
|
||||
<if test="taskType != null">task_type,</if>
|
||||
<if test="taskDeptId != null">task_dept_id,</if>
|
||||
<if test="splitType != null">split_type,</if>
|
||||
<if test="taskStatus != null">task_status,</if>
|
||||
<if test="code != null">`code`,</if>
|
||||
|
|
@ -61,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="preTaskId != null">#{preTaskId},</if>
|
||||
<if test="taskType != null">#{taskType},</if>
|
||||
<if test="taskDeptId != null">#{taskDeptId},</if>
|
||||
<if test="splitType != null">#{splitType},</if>
|
||||
<if test="taskStatus != null">#{taskStatus},</if>
|
||||
<if test="code != null">#{code},</if>
|
||||
|
|
|
|||
|
|
@ -29,4 +29,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<select id="selectConfigValueByNodeId" resultType="java.lang.String">
|
||||
select config_value from sys_workflow_config where node_id = #{nodeId}
|
||||
</select>
|
||||
|
||||
<select id="selectConfigValueInfoByNodeId" resultType="com.bonus.material.work.domain.SysWorkflowConfig">
|
||||
select
|
||||
id, node_id as nodeId, config_type as configType, config_value as configValue,
|
||||
is_enable as isEnable, roleIds from sys_workflow_config
|
||||
where
|
||||
node_id = #{nodeId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="isEnable != null">#{isEnable},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateSysWorkflowNode">
|
||||
update sys_workflow_node
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
|
|
@ -52,9 +53,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSysWorkflowNode">
|
||||
delete from sys_workflow_node where id =#{id}
|
||||
</delete>
|
||||
|
||||
<select id="selectSysWorkflowNodeList" resultType="com.bonus.material.work.domain.SysWorkflowNode">
|
||||
select swn.id as id, swn.type_id typeId, swn.node_name as nodeName, swn.node_sort as nodeSort,
|
||||
swn.node_sign_type as nodeSignType, swn.node_sign_config as nodeSignConfig,swn.node_label as nodeLabel,
|
||||
|
|
@ -67,11 +70,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="nodeSignType != null "> and swn.node_sign_type = #{nodeSignType}</if>
|
||||
GROUP BY swn.id ORDER BY swn.node_sort
|
||||
</select>
|
||||
|
||||
<select id="listByTaskId" resultType="com.bonus.material.work.domain.SysWorkflowNode">
|
||||
select swn.id as id, swn.type_id typeId, swn.node_name as nodeName, swn.node_sort as nodeSort,
|
||||
swn.node_sign_type as nodeSignType, swn.node_sign_config as nodeSignConfig,swn.id as nodeId,
|
||||
swrh.create_by as createBy,swn.is_enable as isEnable,
|
||||
GROUP_CONCAT(DISTINCT sec.config_value SEPARATOR ',') AS configValues,
|
||||
GROUP_CONCAT(DISTINCT sec.config_value SEPARATOR ',') AS configValues,sec.config_type as configType,sec.roleIds,
|
||||
swr.id as recordId
|
||||
from sys_workflow_node swn
|
||||
left join sys_workflow_config sec on swn.id= sec.node_id
|
||||
|
|
|
|||
|
|
@ -40,4 +40,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
left join sys_workflow_node swn on swn.id = swrh.node_id
|
||||
WHERE swrh.record_id =#{recordId} ORDER BY swrh.create_time DESC limit 1
|
||||
</select>
|
||||
|
||||
<select id="getWorkFlowRecordNodeInfoByTaskId" resultType="com.bonus.material.work.domain.SysWorkflowRecordHistory">
|
||||
SELECT r.id as recordId, h.node_id as nodeId, h.next_node_id as nextNodeId
|
||||
FROM sys_workflow_record r
|
||||
JOIN (
|
||||
SELECT *
|
||||
FROM sys_workflow_record_history
|
||||
WHERE record_id = (
|
||||
SELECT id
|
||||
FROM sys_workflow_record
|
||||
WHERE task_id = #{taskId}
|
||||
LIMIT 1
|
||||
)
|
||||
ORDER BY create_time DESC
|
||||
LIMIT 1
|
||||
) h ON r.id = h.record_id
|
||||
WHERE r.task_id = #{taskId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue