功能增强:新增材料员确认功能及分公司权限过滤相关改造

This commit is contained in:
syruan 2025-06-19 16:17:08 +08:00
parent 488cab504c
commit ea56bf273b
29 changed files with 509 additions and 72 deletions

View File

@ -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;

View File

@ -149,4 +149,14 @@ public class BmProject extends BaseEntity
@ApiModelProperty(value = "往来单位ids")
private int[] unitIds;
/**
* 分公司id
*/
private Long deptId;
/**
* 是否开启分公司过滤
*/
private Boolean enableFilter;
}

View File

@ -88,4 +88,9 @@ public class BmUnit extends BaseEntity
@ApiModelProperty(value = "工程id")
private Long projectId;
/**
* 是否过滤分公司true 过滤默认不过滤
*/
private Boolean enableFilter;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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 {

View File

@ -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文件
*/

View File

@ -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);
/**
* 删除领料任务
*

View File

@ -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);
/**
* 新增领料任务
*

View File

@ -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包含345则为领料出库查询需查询领用出库数据进行拼接
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

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -33,6 +33,7 @@ public class SysWorkflowRecordHisController extends BaseController {
sysWorkflowRecordHistoryService.updateSysWorkflowRecordHistory(sysWorkflowRecordHistory);
return new AjaxResult(200,"修改成功!");
}catch (Exception e){
e.printStackTrace();
return error();
}
}

View File

@ -67,6 +67,11 @@ public class SysWorkflowNode {
*/
private String configValues;
/**
* 配置值的类型 0角色 1用户
*/
private Integer configType;
/**
* 任务Id
*/

View File

@ -13,4 +13,6 @@ public interface SysWorkflowConfigMapper {
int deleteSysWorkflowConfig(SysWorkflowConfig sysWorkflowConfig);
String selectConfigValueByNodeId(Integer nodeId);
SysWorkflowConfig selectConfigValueInfoByNodeId(Integer nodeId);
}

View File

@ -13,4 +13,6 @@ public interface SysWorkflowRecordHistoryMapper {
List<SysWorkflowRecordHistory> seleteSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory);
SysWorkflowRecordHistory getWorkflowRecordHistoryByRecordId(Integer recordId);
SysWorkflowRecordHistory getWorkFlowRecordNodeInfoByTaskId(Integer taskId);
}

View File

@ -15,4 +15,6 @@ public interface SysWorkflowNodeService {
int updateSysWorkflowNode(SysWorkflowNode sysWorkflowNode);
List<SysWorkflowNode> listByTaskId(SysWorkflowNode sysWorkflowNode);
void copeNodeConfigPersonValuesByNode(SysWorkflowNode forSysWorkflowNode);
}

View File

@ -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));
}
}
}
}

View File

@ -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);

View File

@ -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());

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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>