车车 4 месяцев назад
Родитель
Сommit
3605ec1092

+ 13 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/android/WorkflowAppController.java

@@ -2,9 +2,12 @@ package cn.iocoder.yudao.module.iscs.controller.admin.android;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.android.vo.AppHomeVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.MyWorkReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.MyWorkRespVO;
-import cn.iocoder.yudao.module.iscs.controller.admin.android.vo.AppHomeVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.WorkflowWorkPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.WorkflowWorkRespVO;
 import cn.iocoder.yudao.module.iscs.service.workdesign.WorkflowWorkService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -27,8 +30,16 @@ public class WorkflowAppController {
     @Resource
     private WorkflowWorkService workflowWorkService;
 
+    @GetMapping("/getAppMyTicketPage")
+    @Operation(summary = "我的相关作业分页")
+    public CommonResult<PageResult<WorkflowWorkRespVO>> getAppMyTicketPage(@Valid WorkflowWorkPageReqVO pageReqVO) {
+        PageResult<WorkflowWorkRespVO> pageResult = workflowWorkService.getAppMyTicketPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, WorkflowWorkRespVO.class));
+    }
+
+
     @GetMapping("/getAppMyWorkPage")
-    @Operation(summary = "我的作业分页")
+    @Operation(summary = "我的任务分页")
     // @PreAuthorize("@ss.hasPermission('app:iscs:workflow-work:query')")
     public CommonResult<PageResult<MyWorkRespVO>> getAppMyWorkPage(@Valid MyWorkReqVO vo) {
         PageResult<MyWorkRespVO> pageResult = workflowWorkService.getAppMyWorkPage(vo);

+ 2 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workflowwork/WorkflowWorkController.java

@@ -93,7 +93,7 @@ public class WorkflowWorkController {
     }
 
     @GetMapping("/getMyWorkPage")
-    @Operation(summary = "我的作业分页")
+    @Operation(summary = "我的任务分页")
     @PreAuthorize("@ss.hasPermission('iscs:workflow-work:query')")
     public CommonResult<PageResult<MyWorkRespVO>> getMyWorkPage(@Valid MyWorkReqVO vo) {
         PageResult<MyWorkRespVO> pageResult = workflowWorkService.getMyWorkPage(vo);
@@ -117,7 +117,7 @@ public class WorkflowWorkController {
 
     // -------------------------------admin-------------------------------------------------
     @GetMapping("/getAdminWorkPage")
-    @Operation(summary = "管理员任务管理(显示全部数据)")
+    @Operation(summary = "管理员任务分页(显示全部数据)")
     @PreAuthorize("@ss.hasPermission('iscs:workflow-work:query')")
     public CommonResult<PageResult<MyWorkRespVO>> getAdminWorkPage(@Valid MyWorkReqVO vo) {
         PageResult<MyWorkRespVO> pageResult = workflowWorkService.getAdminWorkPage(vo);

+ 4 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workflowwork/vo/MyWorkReqVO.java

@@ -16,6 +16,10 @@ public class MyWorkReqVO extends PageParam {
     @Schema(description = "节点状态:pending(未开始)、running(执行中)、approved(通过)、rejected(驳回)")
     private String approvalStatus;
 
+    @Schema(description = "作业ID")
+    private Long workId;
+
     @Schema(description = "前端不用传")
     private Long loginUserId;
+
 }

+ 9 - 3
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workflowwork/vo/WorkflowWorkPageReqVO.java

@@ -1,10 +1,10 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -62,4 +62,10 @@ public class WorkflowWorkPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "前端不用传")
+    private Long loginUserId;
+
+    @Schema(description = "传参")
+    private String key;
+
 }

+ 8 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workflowworknode/vo/WorkflowWorkNodeRespVO.java

@@ -135,4 +135,12 @@ public class WorkflowWorkNodeRespVO {
     @Schema(description = "节点人员数据")
     private List<WorkflowWorkNodeUserDO> nodeUserList;
 
+
+
+    @Schema(description = "负责人", example = "7919")
+    private String workerUserName;
+
+    @Schema(description = "作业发起人", example = "7919")
+    private String initiatorName;
+
 }

+ 3 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/workdesign/WorkflowWorkMapper.java

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.MyWorkReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.MyWorkRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.WorkflowWorkPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.WorkflowWorkRespVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowWorkDO;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
@@ -57,5 +58,7 @@ public interface WorkflowWorkMapper extends BaseMapperX<WorkflowWorkDO> {
 
     Page<MyWorkRespVO> getAdminWorkPage(Page page, @Param(value = "vo") MyWorkReqVO vo);
 
+    Page<WorkflowWorkRespVO> getAppMyTicketPage(Page page, @Param(value = "vo") WorkflowWorkPageReqVO vo);
+
 
 }

+ 9 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowWorkService.java

@@ -102,7 +102,15 @@ public interface WorkflowWorkService extends IService<WorkflowWorkDO> {
     // --------------------------------------------android-------------------------------------
 
     /**
-     * 我的作业分页
+     * 获得作业分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业分页
+     */
+    PageResult<WorkflowWorkRespVO> getAppMyTicketPage(WorkflowWorkPageReqVO pageReqVO);
+
+    /**
+     * 我的任务分页
      * @param vo
      * @return
      */

+ 31 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowWorkServiceImpl.java

@@ -17,6 +17,8 @@ import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowWorkNodeUs
 import cn.iocoder.yudao.module.iscs.dal.mysql.workdesign.WorkflowWorkMapper;
 import cn.iocoder.yudao.module.iscs.utils.MonthTimeUtil;
 import cn.iocoder.yudao.module.iscs.utils.RandomCodeUtil;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -51,6 +53,8 @@ public class WorkflowWorkServiceImpl extends ServiceImpl<WorkflowWorkMapper, Wor
     private WorkflowWorkNodeService workflowWorkNodeService;
     @Resource
     private WorkflowWorkNodeUserService workflowWorkNodeUserService;
+    @Resource
+    private AdminUserService adminUserService;
 
     @Override
     public Long createWorkflowWork(WorkflowWorkSaveReqVO createReqVO) {
@@ -186,9 +190,14 @@ public class WorkflowWorkServiceImpl extends ServiceImpl<WorkflowWorkMapper, Wor
             List<WorkflowWorkNodeDO> list2 = list.stream().filter(o -> "isolation".equals(o.getType()) && StringUtils.isBlank(o.getIsolationPoints())).toList();
             list2.forEach(o -> mes.add("节点[" + o.getNodeName() + "]:未选择隔离点"));
 
-            // 3.检查isolation类型的隔离方式是否为空
+            // 2.1检查isolation类型的隔离方式是否为空
             List<WorkflowWorkNodeDO> list3 = list.stream().filter(o -> "isolation".equals(o.getType()) && StringUtils.isBlank(o.getIsolationType())).toList();
             list3.forEach(o -> mes.add("节点[" + o.getNodeName() + "]:未选择隔离方式"));
+
+            // 3.检查releaseIsolation类型的数据是否完整
+            List<WorkflowWorkNodeDO> list4 = list.stream().filter(o -> "releaseIsolation".equals(o.getType())
+                    && StringUtils.isBlank(o.getIsolationNodeUuid())).toList();
+            list4.forEach(o -> mes.add("节点[" + o.getNodeName() + "]:未选择前置隔离节点"));
         }
         return mes;
     }
@@ -252,6 +261,14 @@ public class WorkflowWorkServiceImpl extends ServiceImpl<WorkflowWorkMapper, Wor
     public WorkflowWorkNodeRespVO getMyWorkNodeDetail(Long nodeId) {
         WorkflowWorkNodeDO byId = workflowWorkNodeService.getById(nodeId);
         WorkflowWorkNodeRespVO bean = BeanUtils.toBean(byId, WorkflowWorkNodeRespVO.class);
+        // 获取作业
+        WorkflowWorkDO workflowWorkDO = getById(byId.getWorkId());
+        AdminUserDO user = adminUserService.getUser(workflowWorkDO.getInitiatorId());
+        String phone = "";
+        if (user != null && StringUtils.isNotBlank(user.getMobile())) {
+            phone = "(" + user.getMobile() + ")";
+        }
+        bean.setInitiatorName(workflowWorkDO.getInitiatorName() + phone);
         return bean;
     }
 
@@ -319,6 +336,19 @@ public class WorkflowWorkServiceImpl extends ServiceImpl<WorkflowWorkMapper, Wor
 
     // ------------------------------------android------------------------------------------
 
+    @Override
+    public PageResult<WorkflowWorkRespVO> getAppMyTicketPage(WorkflowWorkPageReqVO vo) {
+        Long loginUserId = getLoginUserId();
+        Assert.notNull(loginUserId, "请登录!");
+        vo.setLoginUserId(loginUserId);
+        Page page = new Page<>().setSize(vo.getPageSize()).setCurrent(vo.getPageNo());
+        Page<WorkflowWorkRespVO> myWorkPage = workflowWorkMapper.getAppMyTicketPage(page, vo);
+        PageResult<WorkflowWorkRespVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(myWorkPage.getRecords());
+        respVOPageResult.setTotal(myWorkPage.getTotal());
+        return respVOPageResult;
+    }
+
     @Override
     public PageResult<MyWorkRespVO> getAppMyWorkPage(MyWorkReqVO vo) {
         Long loginUserId = getLoginUserId();

+ 50 - 0
yudao-module-iscs/src/main/resources/mapper/workdesign/WorkflowWorkMapper.xml

@@ -172,6 +172,7 @@
         left join system_users su on su.id = work_node.worker_user_id
         <where>
             work_node.deleted = b'0'
+            AND ww.deleted = b'0'
             AND ww.status != 'unreleased'
             AND ww.status != 'scheduled'
             <if test="vo.key != null and vo.key.trim != ''">
@@ -185,4 +186,53 @@
         </where>
         ORDER BY work_node.update_time DESC
     </select>
+
+    <select id="getAppMyTicketPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.WorkflowWorkRespVO">
+        SELECT
+        ww.id,
+        ww.name,
+        ww.order_no,
+        ww.type,
+        ww.urgency_level,
+        ww.description,
+        ww.design_id,
+        ww.design_name,
+        ww.initiator_id,
+        ww.initiator_name,
+        ww.initiation_time,
+        ww.completion_time,
+        ww.cancellation_time,
+        ww.cancellation_reason,
+        ww.status,
+        ww.plan_time
+        FROM
+        isc_workflow_work ww
+        <where>
+            ww.deleted = b'0'
+            AND (
+            EXISTS (
+            SELECT 1
+            FROM isc_workflow_work_node wwn
+            WHERE
+            wwn.work_id = ww.id
+            AND wwn.deleted = b'0'
+            AND (
+            -- 条件1:节点自身负责人ID匹配
+            wwn.worker_user_id = #{vo.loginUserId}
+            -- 条件2:关联表中负责人ID匹配
+            OR EXISTS (SELECT 1 FROM isc_workflow_work_node_user work_node_user
+            WHERE work_node_user.node_id = wwn.id
+            AND work_node_user.deleted = b'0'
+            AND work_node_user.user_id = #{vo.loginUserId} ) )
+            ) )
+            <if test="vo.key != null and vo.key.trim != ''">
+                AND (ww.name like concat('%',#{vo.key},'%')
+                OR ww.order_no like concat('%',#{vo.key},'%')
+                OR ww.initiator_name like concat('%',#{vo.key},'%'))
+            </if>
+        </where>
+        ORDER BY ww.create_time DESC
+
+    </select>
 </mapper>

+ 3 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java

@@ -22,6 +22,9 @@ public class UserPageReqVO extends PageParam {
     @Schema(description = "用户账号,模糊匹配", example = "yudao")
     private String username;
 
+    @Schema(description = "用户昵称,模糊匹配")
+    private String nickname;
+
     @Schema(description = "手机号码,模糊匹配", example = "yudao")
     private String mobile;
 

+ 1 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java

@@ -28,6 +28,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
     default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds, Collection<Long> userIds) {
         return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
                 .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())
                 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
                 .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
                 .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())