diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeaseApplyInfo.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeaseApplyInfo.java index 01dbdc27..2629dfe2 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeaseApplyInfo.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeaseApplyInfo.java @@ -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; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmProject.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmProject.java index b6b91494..b2eb8f64 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmProject.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmProject.java @@ -149,4 +149,14 @@ public class BmProject extends BaseEntity @ApiModelProperty(value = "往来单位ids") private int[] unitIds; + + /** + * 分公司id + */ + private Long deptId; + + /** + * 是否开启分公司过滤 + */ + private Boolean enableFilter; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmUnit.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmUnit.java index 863b72ee..fc4e2826 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmUnit.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/BmUnit.java @@ -88,4 +88,9 @@ public class BmUnit extends BaseEntity @ApiModelProperty(value = "工程id") private Long projectId; + /** + * 是否过滤分公司(true 过滤,默认不过滤) + */ + private Boolean enableFilter; + } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/dto/SysUserRoleVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/dto/SysUserRoleVo.java new file mode 100644 index 00000000..ff8e52ff --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/dto/SysUserRoleVo.java @@ -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; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/BmUserRoleMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/BmUserRoleMapper.java new file mode 100644 index 00000000..bb9af7b5 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/BmUserRoleMapper.java @@ -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 + */ + List getUserRoleListByDeptId(@Param("deptId") Long deptId, @Param("roleId") Long roleId); +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java index 512af818..4b5697f3 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java @@ -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 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 groupList = new ArrayList<>(); List list = new ArrayList<>(); try { diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/controller/LeaseApplyInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/controller/LeaseApplyInfoController.java index 91654c8c..7329c7d6 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/controller/LeaseApplyInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/controller/LeaseApplyInfoController.java @@ -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 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文件 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java index c11cfc95..e7aa1011 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java @@ -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); + /** * 删除领料任务 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/ILeaseApplyInfoService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/ILeaseApplyInfoService.java index f9c71504..de9d4509 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/ILeaseApplyInfoService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/ILeaseApplyInfoService.java @@ -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 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 getCompleteOutTaskList(LeaseApplyInfo leaseApplyInfo); + + /** * 新增领料任务 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java index d6f664ca..49f815db 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java @@ -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 getCompleteOutTaskList(LeaseApplyInfo leaseApplyInfo) { + leaseApplyInfo.setUserId(SecurityUtils.getUserId()); + List list = leaseApplyInfoMapper.selectLeaseApplyInfoList(leaseApplyInfo); + // 如果statusList包含3、4、5,则为领料出库查询,需查询领用出库数据,进行拼接 + if (!CollectionUtils.isEmpty(leaseApplyInfo.getStatusList())) { + if (leaseApplyInfo.getStatusList().contains(4)) { + // 查询领用出库数据 + List 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 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 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java index 72ab90ce..f9b5b49f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java @@ -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 SysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory); + List 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 configUserIds = new ArrayList<>(); + for (String roleId : roleIds) { + if (roleId == null || roleId.isEmpty()) { + continue; + } + List 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 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; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java index f503504d..9937cd7f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java @@ -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; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/service/impl/TmTaskAuditLogServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/service/impl/TmTaskAuditLogServiceImpl.java index c103af12..9b8032b0 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/service/impl/TmTaskAuditLogServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/service/impl/TmTaskAuditLogServiceImpl.java @@ -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); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java index 1fbab489..3a9eeede 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java @@ -33,6 +33,7 @@ public class SysWorkflowRecordHisController extends BaseController { sysWorkflowRecordHistoryService.updateSysWorkflowRecordHistory(sysWorkflowRecordHistory); return new AjaxResult(200,"修改成功!"); }catch (Exception e){ + e.printStackTrace(); return error(); } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/domain/SysWorkflowNode.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/domain/SysWorkflowNode.java index 98271abc..032bb6b4 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/domain/SysWorkflowNode.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/domain/SysWorkflowNode.java @@ -67,6 +67,11 @@ public class SysWorkflowNode { */ private String configValues; + /** + * 配置值的类型 0角色 1用户 + */ + private Integer configType; + /** * 任务Id */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowConfigMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowConfigMapper.java index 012d9fa5..c2278ef8 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowConfigMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowConfigMapper.java @@ -13,4 +13,6 @@ public interface SysWorkflowConfigMapper { int deleteSysWorkflowConfig(SysWorkflowConfig sysWorkflowConfig); String selectConfigValueByNodeId(Integer nodeId); + + SysWorkflowConfig selectConfigValueInfoByNodeId(Integer nodeId); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java index 2d3cc22f..f36417a6 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java @@ -13,4 +13,6 @@ public interface SysWorkflowRecordHistoryMapper { List seleteSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory); SysWorkflowRecordHistory getWorkflowRecordHistoryByRecordId(Integer recordId); + + SysWorkflowRecordHistory getWorkFlowRecordNodeInfoByTaskId(Integer taskId); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowNodeService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowNodeService.java index 272b343f..4ea71baa 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowNodeService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowNodeService.java @@ -15,4 +15,6 @@ public interface SysWorkflowNodeService { int updateSysWorkflowNode(SysWorkflowNode sysWorkflowNode); List listByTaskId(SysWorkflowNode sysWorkflowNode); + + void copeNodeConfigPersonValuesByNode(SysWorkflowNode forSysWorkflowNode); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowNodeServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowNodeServiceImpl.java index c096b10f..74e5195b 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowNodeServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowNodeServiceImpl.java @@ -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 listByTaskId(SysWorkflowNode sysWorkflowNode) { Long userId = SecurityUtils.getLoginUser().getUserid(); List 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 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 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 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 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 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)); + } + } + } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java index 6f46b44a..73367854 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java @@ -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 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 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); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordServiceImpl.java index 5df5ac52..3df52377 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordServiceImpl.java @@ -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 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()); diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/BmUserRoleMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/BmUserRoleMapper.xml new file mode 100644 index 00000000..61d81eb9 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/BmUserRoleMapper.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml index a35d3b37..073ca9b0 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml @@ -30,7 +30,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bp.pro_id = #{projectId} + + AND bu.dept_id = #{deptId} + + 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" AND bp.pro_id = #{projectId} + + AND bu.dept_id = #{deptId} + + UNION SELECT bu.unit_id AS id, @@ -72,6 +81,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bp.pro_id = #{projectId} + + AND bu.dept_id = #{deptId} + ) ff ORDER BY LEVEL @@ -291,6 +303,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bu.unit_id = #{unitId} + + AND bu.dept_id = #{deptId} + UNION SELECT DISTINCT concat( 'gs', sd.dept_id ) AS id, @@ -311,6 +326,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bu.unit_id = #{unitId} + + AND bu.dept_id = #{deptId} + ) 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' + + AND bpl.imp_unit = #{deptId} + SELECT unit_id AS unitId, unit_name AS unitName FROM bm_unit WHERE del_flag = '0' + + AND bpl.imp_unit = #{deptId} + diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml index 457646b2..e35f5138 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml @@ -36,6 +36,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + @@ -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 + + + update + lease_apply_info + set + material_man = #{materialMan}, confirm_time = #{confirmTime}, is_confirm = #{isConfirm}, + confirm_remark = #{confirmRemark} + where + id = #{id} + \ No newline at end of file diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseTaskMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseTaskMapper.xml index b903d7f6..dd1281c1 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseTaskMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseTaskMapper.xml @@ -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 - and swc.config_value LIKE CONCAT('%', #{userId}, '%') + and lai.code = #{code} and lai.task_id = #{taskId} and lai.lease_person = #{leasePerson} diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml index b044eba1..30947ed2 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml @@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pre_task_id, task_type, + task_dept_id, split_type, task_status, `code`, @@ -61,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{preTaskId}, #{taskType}, + #{taskDeptId}, #{splitType}, #{taskStatus}, #{code}, diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowConfigMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowConfigMapper.xml index 546d37ca..f1ca6652 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowConfigMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowConfigMapper.xml @@ -29,4 +29,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowNodeMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowNodeMapper.xml index 6f4fd9a9..527b8dd7 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowNodeMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowNodeMapper.xml @@ -42,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{isEnable}, + update sys_workflow_node @@ -52,9 +53,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + delete from sys_workflow_node where id =#{id} + + + +