add(feature/REQ-3714) 移除平台工人时,同时终止工人入场申请
This commit is contained in:
parent
a3bce5367e
commit
0f213baf6a
@ -103,6 +103,10 @@ public class OrgNodeDTO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private JSONObject profile;
|
private JSONObject profile;
|
||||||
|
|
||||||
|
private Long platTeamId;
|
||||||
|
|
||||||
|
private Long projectTeamId;
|
||||||
|
|
||||||
private Date createAt;
|
private Date createAt;
|
||||||
private Long createBy;
|
private Long createBy;
|
||||||
private Date updateAt;
|
private Date updateAt;
|
||||||
|
|||||||
@ -0,0 +1,16 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.client.workflow;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.client.workflow.dto.BatchOperationResultResp;
|
||||||
|
import cn.axzo.orgmanax.infra.client.workflow.dto.BpmnProcessInstanceAbortReq;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/20 09:37
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
public interface WorkflowCoreClient {
|
||||||
|
|
||||||
|
BatchOperationResultResp batchAbortProcessInstance(List<BpmnProcessInstanceAbortReq> reqs);
|
||||||
|
}
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.client.workflow.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/20 09:44
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class BatchOperationResultResp {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求数量
|
||||||
|
*/
|
||||||
|
private Integer requestCount = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败数量
|
||||||
|
*/
|
||||||
|
private Integer failCount = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量操作处理详情
|
||||||
|
*/
|
||||||
|
private List<BatchOperationItemResultResp> details;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class BatchOperationItemResultResp {
|
||||||
|
/**
|
||||||
|
* 被处理数据的 ID
|
||||||
|
* 可以是实例 ID,也可以是任务 ID,根据调用的 API 不同而不同
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理的数据类型: 业务审批, 流程审批
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 该流程实例处理过程中是否发生错误
|
||||||
|
*/
|
||||||
|
private Boolean hasError = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 具体的错误信息
|
||||||
|
*/
|
||||||
|
private String errorMessage;
|
||||||
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.client.workflow.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/20 09:39
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
@Builder
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class BpmnProcessInstanceAbortReq {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 中止原因
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "中止原因不能为空")
|
||||||
|
@Length(max = 100, message = "中止原因长度不能超过 100 个字符")
|
||||||
|
private String reason;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程实例 ID
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "流程实例 ID 不能为空")
|
||||||
|
private String processInstanceId;
|
||||||
|
}
|
||||||
@ -1,8 +1,221 @@
|
|||||||
package cn.axzo.orgmanax.infra.dao.invite.repository;
|
package cn.axzo.orgmanax.infra.dao.invite.repository;
|
||||||
|
|
||||||
|
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||||
|
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||||
|
import cn.axzo.foundation.page.PageReqV2;
|
||||||
|
import cn.axzo.foundation.page.PageResp;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.entity.ProjectWorkerInvite;
|
||||||
|
import cn.axzo.trade.datasecurity.core.annotation.CryptField;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhanghongbo
|
* @author zhanghongbo
|
||||||
* @date 2025/1/8
|
* @date 2025/1/8
|
||||||
*/
|
*/
|
||||||
public interface ProjectWorkerInviteRepository {
|
public interface ProjectWorkerInviteRepository {
|
||||||
|
|
||||||
|
PageResp<ProjectWorkerInviteResp> page(ListReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列表查询
|
||||||
|
*
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
default List<ProjectWorkerInviteResp> list(ListReq req) {
|
||||||
|
PageResp<ProjectWorkerInviteResp> page = page(req);
|
||||||
|
if (page == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return CollUtil.emptyIfNull(page.getData());
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateBatchById(List<ProjectWorkerInvite> req);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
class ListReq extends PageReqV2 {
|
||||||
|
|
||||||
|
@CriteriaField(field = "id", operator = Operator.EQ)
|
||||||
|
private Long id;
|
||||||
|
@CriteriaField(field = "id", operator = Operator.IN)
|
||||||
|
private List<Long> ids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作台ID
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "workspaceId", operator = Operator.EQ)
|
||||||
|
private Long workspaceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内班组ID
|
||||||
|
*/
|
||||||
|
|
||||||
|
@CriteriaField(field = "projectTeamId", operator = Operator.EQ)
|
||||||
|
private Long projectTeamId;
|
||||||
|
@CriteriaField(field = "projectTeamId", operator = Operator.IN)
|
||||||
|
private List<Long> projectTeamIds;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工人ID
|
||||||
|
*/
|
||||||
|
|
||||||
|
@CriteriaField(field = "workerIdentityId", operator = Operator.EQ)
|
||||||
|
private Long workerIdentityId;
|
||||||
|
@CriteriaField(field = "workerIdentityId", operator = Operator.IN)
|
||||||
|
private List<Long> workerIdentityIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态:1、待班组审批 2、待劳务审批 3、通过 4、拒绝
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "status", operator = Operator.EQ)
|
||||||
|
private Integer status;
|
||||||
|
@CriteriaField(field = "status", operator = Operator.IN)
|
||||||
|
private List<Integer> statusList;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作流流程实例id
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "processInstanceId", operator = Operator.EQ)
|
||||||
|
private String processInstanceId;
|
||||||
|
@CriteriaField(field = "processInstanceId", operator = Operator.IN)
|
||||||
|
private List<String> processInstanceIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询返回数据包含,逻辑删除数据,即查询未删除和已删除的数据。
|
||||||
|
*/
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private Boolean includeDeleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
class ProjectWorkerInviteResp {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作台ID
|
||||||
|
*/
|
||||||
|
private Long workspaceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总包ID
|
||||||
|
*/
|
||||||
|
private Long entId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内班组ID
|
||||||
|
*/
|
||||||
|
private Long projectTeamId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内工人id
|
||||||
|
*/
|
||||||
|
private Long projectWorkerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所属单位ID
|
||||||
|
*/
|
||||||
|
private Long organizationalUnitId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所属单位类型: 1:总包 4:专业分包 5:劳务分包
|
||||||
|
*/
|
||||||
|
private Integer organizationalUnitType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工人ID
|
||||||
|
*/
|
||||||
|
private Long workerIdentityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态:1、待班组审批 2、待劳务审批 3、通过 4、拒绝
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型:1、班组长邀请 2、二维码邀请 3:派单
|
||||||
|
*/
|
||||||
|
private Integer source;
|
||||||
|
/**
|
||||||
|
* 邀请人id
|
||||||
|
*/
|
||||||
|
private Long inviterId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邀请人名称
|
||||||
|
*/
|
||||||
|
private String inviterName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否删除 0:未删除 其他:已删除
|
||||||
|
*/
|
||||||
|
private Long isDelete;
|
||||||
|
|
||||||
|
private Date createAt;
|
||||||
|
|
||||||
|
private Date updateAt;
|
||||||
|
/**
|
||||||
|
* 工种类别 技工 普工
|
||||||
|
*/
|
||||||
|
private String professionCategoryName;
|
||||||
|
/**
|
||||||
|
* 审批人的从业人员身份id
|
||||||
|
*/
|
||||||
|
private Long approverIdentityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 班组长审批时间,REQ-598
|
||||||
|
*/
|
||||||
|
private Date teamLeaderAuditDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* source = 4合作小组派单,记录甲方的班组id
|
||||||
|
*/
|
||||||
|
private Long belongProjectTeamId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工人名称
|
||||||
|
*/
|
||||||
|
private String workerName;
|
||||||
|
/**
|
||||||
|
* 工人电话号码
|
||||||
|
*/
|
||||||
|
@CryptField
|
||||||
|
private String workerPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作流流程实例id
|
||||||
|
*/
|
||||||
|
private String processInstanceId;
|
||||||
|
/**
|
||||||
|
* 邀请的工种
|
||||||
|
*/
|
||||||
|
private JSONObject professionExt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 扩展字段
|
||||||
|
*/
|
||||||
|
private JSONObject extra;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,21 @@
|
|||||||
package cn.axzo.orgmanax.infra.dao.invite.repository.impl;
|
package cn.axzo.orgmanax.infra.dao.invite.repository.impl;
|
||||||
|
|
||||||
|
import cn.axzo.foundation.dao.support.converter.PageConverter;
|
||||||
|
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
||||||
|
import cn.axzo.foundation.page.PageResp;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.dao.ProjectWorkerInviteDao;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.entity.ProjectWorkerInvite;
|
||||||
import cn.axzo.orgmanax.infra.dao.invite.repository.ProjectWorkerInviteRepository;
|
import cn.axzo.orgmanax.infra.dao.invite.repository.ProjectWorkerInviteRepository;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhanghongbo
|
* @author zhanghongbo
|
||||||
* @date 2025/1/8
|
* @date 2025/1/8
|
||||||
@ -13,4 +24,25 @@ import org.springframework.stereotype.Repository;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class ProjectWorkerInviteRepositoryImpl implements ProjectWorkerInviteRepository {
|
public class ProjectWorkerInviteRepositoryImpl implements ProjectWorkerInviteRepository {
|
||||||
|
|
||||||
|
private final ProjectWorkerInviteDao projectWorkerInviteDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResp<ProjectWorkerInviteResp> page(ListReq req) {
|
||||||
|
IPage<ProjectWorkerInvite> page = PageConverter.toMybatis(req, ProjectWorkerInvite.class);
|
||||||
|
QueryWrapper<ProjectWorkerInvite> wrapper = QueryWrapperHelper.fromBean(req, ProjectWorkerInvite.class);
|
||||||
|
if (BooleanUtils.isNotTrue(req.getIncludeDeleted())) {
|
||||||
|
wrapper.eq("is_delete", 0);
|
||||||
|
}
|
||||||
|
IPage<ProjectWorkerInviteResp> results = projectWorkerInviteDao.page(page, wrapper)
|
||||||
|
.convert(e -> BeanUtil.toBean(e, ProjectWorkerInviteResp.class));
|
||||||
|
|
||||||
|
PageResp<ProjectWorkerInviteResp> resp = PageConverter.toResp(results);
|
||||||
|
return resp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateBatchById(List<ProjectWorkerInvite> invites){
|
||||||
|
projectWorkerInviteDao.updateBatchById(invites);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -137,6 +137,17 @@ public class OrganizationalNode implements Serializable {
|
|||||||
@TableField(value = "profile", typeHandler = FastjsonTypeHandler.class)
|
@TableField(value = "profile", typeHandler = FastjsonTypeHandler.class)
|
||||||
private JSONObject profile;
|
private JSONObject profile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平台班组id
|
||||||
|
*/
|
||||||
|
@TableField("__vc_plat_team_id")
|
||||||
|
private Long platTeamId;
|
||||||
|
/**
|
||||||
|
* 项目班组id
|
||||||
|
*/
|
||||||
|
@TableField("__vc_project_team_id")
|
||||||
|
private Long projectTeamId;
|
||||||
|
|
||||||
protected Date createAt;
|
protected Date createAt;
|
||||||
protected Long createBy;
|
protected Long createBy;
|
||||||
protected Date updateAt;
|
protected Date updateAt;
|
||||||
|
|||||||
@ -57,6 +57,8 @@ public interface OrgProjectWorkerQueryRepository {
|
|||||||
@Data
|
@Data
|
||||||
@SuperBuilder
|
@SuperBuilder
|
||||||
class ListReq extends PageReqV2 {
|
class ListReq extends PageReqV2 {
|
||||||
|
@CriteriaField(field = "id", operator = Operator.IN)
|
||||||
|
private List<Long> ids;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作台ID
|
* 工作台ID
|
||||||
|
|||||||
@ -76,6 +76,19 @@
|
|||||||
<artifactId>data-tagger-api</artifactId>
|
<artifactId>data-tagger-api</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 标签系统依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.data-tagger</groupId>
|
||||||
|
<artifactId>data-tagger-api</artifactId>
|
||||||
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 工作流依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.workflow</groupId>
|
||||||
|
<artifactId>workflow-engine-spring-boot-starter</artifactId>
|
||||||
|
<version>1.5.2-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cn.axzo.orgmanax.integration.sdk.workflow;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.client.workflow.WorkflowCoreClient;
|
||||||
|
import cn.axzo.orgmanax.infra.client.workflow.dto.BatchOperationResultResp;
|
||||||
|
import cn.axzo.orgmanax.infra.client.workflow.dto.BpmnProcessInstanceAbortReq;
|
||||||
|
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
|
||||||
|
import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO;
|
||||||
|
import cn.axzo.workflow.starter.api.WorkflowCoreService;
|
||||||
|
import cn.azxo.framework.common.logger.MethodAroundLog;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/20 09:41
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class WorkflowCoreClientImpl implements WorkflowCoreClient {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private final WorkflowCoreService workflowCoreService;
|
||||||
|
@Override
|
||||||
|
@MethodAroundLog(source = "orgmanax", target = "workflow", value = "批量驳回流程实例")
|
||||||
|
public BatchOperationResultResp batchAbortProcessInstance(List<BpmnProcessInstanceAbortReq> reqs) {
|
||||||
|
List<BpmnProcessInstanceAbortDTO> abortDTOS = BeanUtil.copyToList(reqs, BpmnProcessInstanceAbortDTO.class);
|
||||||
|
BatchOperationResultVO resultVO = workflowCoreService.async().batchAbortProcessInstance(abortDTOS);
|
||||||
|
return BeanUtil.copyProperties(resultVO,BatchOperationResultResp.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package cn.axzo.orgmanax.server.invite.foundation;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.repository.ProjectWorkerInviteRepository;
|
||||||
|
import cn.axzo.orgmanax.server.invite.foundation.dto.ProjectWorkerInviteCreator;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/19 18:05
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
public interface ProjectWorkerInviteFoundationService {
|
||||||
|
|
||||||
|
List<ProjectWorkerInviteRepository.ProjectWorkerInviteResp> updateBatchById(List<ProjectWorkerInviteCreator> req);
|
||||||
|
}
|
||||||
@ -0,0 +1,143 @@
|
|||||||
|
package cn.axzo.orgmanax.server.invite.foundation.dto;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.entity.ProjectWorkerInvite;
|
||||||
|
import cn.axzo.trade.datasecurity.core.annotation.CryptField;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/19 18:07
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class ProjectWorkerInviteCreator {
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作台ID
|
||||||
|
*/
|
||||||
|
private Long workspaceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总包ID
|
||||||
|
*/
|
||||||
|
private Long entId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内班组ID
|
||||||
|
*/
|
||||||
|
private Long projectTeamId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内工人id
|
||||||
|
*/
|
||||||
|
private Long projectWorkerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所属单位ID
|
||||||
|
*/
|
||||||
|
private Long organizationalUnitId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所属单位类型: 1:总包 4:专业分包 5:劳务分包
|
||||||
|
*/
|
||||||
|
private Integer organizationalUnitType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工人ID
|
||||||
|
*/
|
||||||
|
private Long workerIdentityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态:1、待班组审批 2、待劳务审批 3、通过 4、拒绝
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型:1、班组长邀请 2、二维码邀请 3:派单
|
||||||
|
*/
|
||||||
|
private Integer source;
|
||||||
|
/**
|
||||||
|
* 邀请人id
|
||||||
|
*/
|
||||||
|
private Long inviterId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邀请人名称
|
||||||
|
*/
|
||||||
|
private String inviterName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否删除 0:未删除 其他:已删除
|
||||||
|
*/
|
||||||
|
private Long isDelete;
|
||||||
|
|
||||||
|
private Date createAt;
|
||||||
|
|
||||||
|
private Date updateAt;
|
||||||
|
/**
|
||||||
|
* 工种类别 技工 普工
|
||||||
|
*/
|
||||||
|
private String professionCategoryName;
|
||||||
|
/**
|
||||||
|
* 审批人的从业人员身份id
|
||||||
|
*/
|
||||||
|
private Long approverIdentityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 班组长审批时间,REQ-598
|
||||||
|
*/
|
||||||
|
private Date teamLeaderAuditDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* source = 4合作小组派单,记录甲方的班组id
|
||||||
|
*/
|
||||||
|
private Long belongProjectTeamId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工人名称
|
||||||
|
*/
|
||||||
|
private String workerName;
|
||||||
|
/**
|
||||||
|
* 工人电话号码
|
||||||
|
*/
|
||||||
|
@CryptField
|
||||||
|
private String workerPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作流流程实例id
|
||||||
|
*/
|
||||||
|
private String processInstanceId;
|
||||||
|
/**
|
||||||
|
* 邀请的工种
|
||||||
|
*/
|
||||||
|
private JSONObject professionExt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 扩展字段
|
||||||
|
*/
|
||||||
|
private JSONObject extra;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建实体
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ProjectWorkerInvite toEntity() {
|
||||||
|
return BeanUtil.copyProperties(this, ProjectWorkerInvite.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.axzo.orgmanax.server.invite.foundation.impl;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.entity.ProjectWorkerInvite;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.repository.ProjectWorkerInviteRepository;
|
||||||
|
import cn.axzo.orgmanax.server.invite.foundation.ProjectWorkerInviteFoundationService;
|
||||||
|
import cn.axzo.orgmanax.server.invite.foundation.dto.ProjectWorkerInviteCreator;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/19 18:10
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class ProjectWorkerInviteFoundationServiceImpl implements ProjectWorkerInviteFoundationService {
|
||||||
|
private final ProjectWorkerInviteRepository projectWorkerInviteRepository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ProjectWorkerInviteRepository.ProjectWorkerInviteResp> updateBatchById(List<ProjectWorkerInviteCreator> req) {
|
||||||
|
List<ProjectWorkerInvite> projectWorkerInvites = req.stream().map(item -> item.toEntity()).collect(Collectors.toList());
|
||||||
|
projectWorkerInviteRepository.updateBatchById(projectWorkerInvites);
|
||||||
|
return BeanUtil.copyToList(projectWorkerInvites, ProjectWorkerInviteRepository.ProjectWorkerInviteResp.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,9 +4,12 @@ import cn.axzo.foundation.exception.Axssert;
|
|||||||
import cn.axzo.framework.rocketmq.EventProduceTemplate;
|
import cn.axzo.framework.rocketmq.EventProduceTemplate;
|
||||||
import cn.axzo.framework.rocketmq.RocketConfigProperties;
|
import cn.axzo.framework.rocketmq.RocketConfigProperties;
|
||||||
import cn.axzo.karma.client.model.request.PlatWorkTeamGrantPositionReq;
|
import cn.axzo.karma.client.model.request.PlatWorkTeamGrantPositionReq;
|
||||||
|
import cn.axzo.maokai.api.labour.common.enums.WorkerInviteStatusEnum;
|
||||||
import cn.axzo.msg.center.api.v2.message.req.MessageSendV2Req;
|
import cn.axzo.msg.center.api.v2.message.req.MessageSendV2Req;
|
||||||
import cn.axzo.msg.center.api.v2.message.req.PersonV2DTO;
|
import cn.axzo.msg.center.api.v2.message.req.PersonV2DTO;
|
||||||
import cn.axzo.orgmanax.dto.common.IdentityType;
|
import cn.axzo.orgmanax.dto.common.IdentityType;
|
||||||
|
import cn.axzo.orgmanax.dto.node.dto.OrgNodeDTO;
|
||||||
|
import cn.axzo.orgmanax.dto.node.req.ListNodeReq;
|
||||||
import cn.axzo.orgmanax.dto.nodeuser.dto.NodeUserDTO;
|
import cn.axzo.orgmanax.dto.nodeuser.dto.NodeUserDTO;
|
||||||
import cn.axzo.orgmanax.dto.nodeuser.req.DeleteNodeUserReq;
|
import cn.axzo.orgmanax.dto.nodeuser.req.DeleteNodeUserReq;
|
||||||
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
||||||
@ -15,14 +18,20 @@ import cn.axzo.orgmanax.infra.client.eventhub.dto.OrganizationTypeEnum;
|
|||||||
import cn.axzo.orgmanax.infra.client.msg.MsgCenterGateway;
|
import cn.axzo.orgmanax.infra.client.msg.MsgCenterGateway;
|
||||||
import cn.axzo.orgmanax.infra.client.tyr.SaasRoleUserClient;
|
import cn.axzo.orgmanax.infra.client.tyr.SaasRoleUserClient;
|
||||||
import cn.axzo.orgmanax.infra.client.tyr.dto.OrgManaxWorkerManagerRoleUserReq;
|
import cn.axzo.orgmanax.infra.client.tyr.dto.OrgManaxWorkerManagerRoleUserReq;
|
||||||
|
import cn.axzo.orgmanax.infra.client.workflow.WorkflowCoreClient;
|
||||||
|
import cn.axzo.orgmanax.infra.client.workflow.dto.BpmnProcessInstanceAbortReq;
|
||||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.invite.repository.ProjectWorkerInviteRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode;
|
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalTeamOuRelation;
|
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalTeamOuRelation;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.repository.TeamOuRelationRepository;
|
import cn.axzo.orgmanax.infra.dao.node.repository.TeamOuRelationRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
||||||
|
import cn.axzo.orgmanax.server.invite.foundation.ProjectWorkerInviteFoundationService;
|
||||||
|
import cn.axzo.orgmanax.server.invite.foundation.dto.ProjectWorkerInviteCreator;
|
||||||
|
import cn.axzo.orgmanax.server.node.service.NodeService;
|
||||||
import cn.axzo.orgmanax.server.nodeuser.foundation.NodeUserFoundationService;
|
import cn.axzo.orgmanax.server.nodeuser.foundation.NodeUserFoundationService;
|
||||||
import cn.axzo.orgmanax.server.nodeuser.foundation.req.NodeUserDelete;
|
import cn.axzo.orgmanax.server.nodeuser.foundation.req.NodeUserDelete;
|
||||||
import cn.axzo.orgmanax.server.nodeuser.foundation.req.NodeUserUpdate;
|
import cn.axzo.orgmanax.server.nodeuser.foundation.req.NodeUserUpdate;
|
||||||
@ -31,11 +40,14 @@ import cn.axzo.orgmanax.server.nodeuser.service.processor.NodeUserProcessor;
|
|||||||
import cn.axzo.orgmanax.infra.client.msg.vo.JoinLeaveEnum;
|
import cn.axzo.orgmanax.infra.client.msg.vo.JoinLeaveEnum;
|
||||||
import cn.axzo.orgmanax.infra.client.msg.vo.MessageCodeEnum;
|
import cn.axzo.orgmanax.infra.client.msg.vo.MessageCodeEnum;
|
||||||
import cn.axzo.orgmanax.infra.client.msg.vo.MessageVariableNameEnum;
|
import cn.axzo.orgmanax.infra.client.msg.vo.MessageVariableNameEnum;
|
||||||
|
import cn.axzo.orgmanax.server.project.worker.foundation.OrgProjectWorkerFoundationService;
|
||||||
|
import cn.axzo.orgmanax.server.project.worker.foundation.req.DeleteOrgProjectWorkerReq;
|
||||||
import cn.axzo.orgmanax.server.util.AssertUtil;
|
import cn.axzo.orgmanax.server.util.AssertUtil;
|
||||||
import cn.axzo.orgmanax.server.workerprofession.foundation.OrgProjectWorkerProfessionFoundationService;
|
import cn.axzo.orgmanax.server.workerprofession.foundation.OrgProjectWorkerProfessionFoundationService;
|
||||||
import cn.axzo.orgmanax.server.workerprofession.foundation.dto.DeleteWorkerProfession;
|
import cn.axzo.orgmanax.server.workerprofession.foundation.dto.DeleteWorkerProfession;
|
||||||
import cn.axzo.tyr.client.common.enums.RoleResourceTypeEnum;
|
import cn.axzo.tyr.client.common.enums.RoleResourceTypeEnum;
|
||||||
import cn.axzo.tyr.client.common.enums.SaasPositionEnum;
|
import cn.axzo.tyr.client.common.enums.SaasPositionEnum;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
@ -44,9 +56,13 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.support.TransactionTemplate;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -81,6 +97,12 @@ public class DeletePlatTeamWorkerProcessor implements NodeUserProcessor {
|
|||||||
private final EventProduceTemplate eventProduceTemplate;
|
private final EventProduceTemplate eventProduceTemplate;
|
||||||
private final RocketConfigProperties rocketConfigProperties;
|
private final RocketConfigProperties rocketConfigProperties;
|
||||||
private final NodeQueryRepository nodeQueryRepository;
|
private final NodeQueryRepository nodeQueryRepository;
|
||||||
|
private final NodeService nodeService;
|
||||||
|
private final ProjectWorkerInviteRepository projectWorkerInviteRepository;
|
||||||
|
private final ProjectWorkerInviteFoundationService projectWorkerInviteFoundationService;
|
||||||
|
private final OrgProjectWorkerFoundationService orgProjectWorkerFoundationService;
|
||||||
|
private final TransactionTemplate transactionTemplate;
|
||||||
|
private final WorkflowCoreClient workflowCoreClient;
|
||||||
private static final String PROMISE_GROUP_EVENT_MODULE = "promise-group";
|
private static final String PROMISE_GROUP_EVENT_MODULE = "promise-group";
|
||||||
private static final String PROMISE_GROUP_EVENT_NAME = "promise-group-remove";
|
private static final String PROMISE_GROUP_EVENT_NAME = "promise-group-remove";
|
||||||
|
|
||||||
@ -127,6 +149,8 @@ public class DeletePlatTeamWorkerProcessor implements NodeUserProcessor {
|
|||||||
if (Objects.nonNull(ouRelation)) {
|
if (Objects.nonNull(ouRelation)) {
|
||||||
// 移除代班长权限
|
// 移除代班长权限
|
||||||
removePlatTeamManager(ouRelation, vs);
|
removePlatTeamManager(ouRelation, vs);
|
||||||
|
// 终止项目内正在申请中的邀约记录
|
||||||
|
removeWorkerInvite(ouRelation, vs);
|
||||||
// 删除平台工人
|
// 删除平台工人
|
||||||
List<Long> deleteTeamWorkerPersonIds = vs.stream().map(NodeUserDTO::getPersonId).collect(Collectors.toList());
|
List<Long> deleteTeamWorkerPersonIds = vs.stream().map(NodeUserDTO::getPersonId).collect(Collectors.toList());
|
||||||
NodeUserDelete nodeUserDelete = NodeUserDelete.builder()
|
NodeUserDelete nodeUserDelete = NodeUserDelete.builder()
|
||||||
@ -172,6 +196,63 @@ public class DeletePlatTeamWorkerProcessor implements NodeUserProcessor {
|
|||||||
sendMQ(ouRelation, nodeUserDTOS);
|
sendMQ(ouRelation, nodeUserDTOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void removeWorkerInvite(OrganizationalTeamOuRelation ouRelation, List<NodeUserDTO> nodeUserDTOS){
|
||||||
|
List<OrgNodeDTO> orgNodeDTOS = listProjectTeam(ouRelation);
|
||||||
|
if (CollUtil.isEmpty(orgNodeDTOS)) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Long> identityIds = nodeUserDTOS.stream().map(NodeUserDTO::getIdentityId).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<Long> projectTeamIds = orgNodeDTOS.stream().map(OrgNodeDTO::getProjectTeamId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
|
|
||||||
|
ProjectWorkerInviteRepository.ListReq queryBo = new ProjectWorkerInviteRepository.ListReq();
|
||||||
|
queryBo.setProjectTeamIds(projectTeamIds);
|
||||||
|
queryBo.setWorkerIdentityIds(identityIds);
|
||||||
|
queryBo.setStatusList(Arrays.asList(WorkerInviteStatusEnum.WAIT_LEADER_APPROVE.getValue(), WorkerInviteStatusEnum.WAIT_LABOUR_APPROVE.getValue()));
|
||||||
|
queryBo.setIncludeDeleted(Boolean.FALSE);
|
||||||
|
List<ProjectWorkerInviteRepository.ProjectWorkerInviteResp> workerInvites = projectWorkerInviteRepository.list(queryBo);
|
||||||
|
List<Long> inviteIds = workerInvites.stream().map(ProjectWorkerInviteRepository.ProjectWorkerInviteResp::getId).collect(Collectors.toList());
|
||||||
|
List<String> processInstanceIds = workerInvites.stream().map(ProjectWorkerInviteRepository.ProjectWorkerInviteResp::getProcessInstanceId).filter(StringUtils::hasText).collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<ProjectWorkerInviteCreator> inviteCreators = workerInvites.stream().map(item -> {
|
||||||
|
ProjectWorkerInviteCreator projectWorkerInviteCreator = BeanUtil.copyProperties(item, ProjectWorkerInviteCreator.class);
|
||||||
|
projectWorkerInviteCreator.setStatus(WorkerInviteStatusEnum.TEAM_OWNER_REFUSE.getValue());
|
||||||
|
return projectWorkerInviteCreator;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<Long> projectWorkerIds = workerInvites.stream().map(ProjectWorkerInviteRepository.ProjectWorkerInviteResp::getProjectWorkerId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
transactionTemplate.executeWithoutResult(status -> {
|
||||||
|
projectWorkerInviteFoundationService.updateBatchById(inviteCreators);
|
||||||
|
log.info("拒绝未完成的工人申请记录, workerInvites:{}", JSON.toJSONString(workerInvites));
|
||||||
|
orgProjectWorkerFoundationService.deleteByParam(DeleteOrgProjectWorkerReq.builder().projectWorkerIds(projectWorkerIds).build());
|
||||||
|
if (CollUtil.isNotEmpty(inviteIds)) {
|
||||||
|
log.info("撤销未加入项目的工人审批记录 inviteIds:{}", inviteIds);
|
||||||
|
List<BpmnProcessInstanceAbortReq> abortReqs = processInstanceIds.stream().map(processInstanceId -> {
|
||||||
|
return BpmnProcessInstanceAbortReq.builder()
|
||||||
|
.processInstanceId(processInstanceId)
|
||||||
|
.reason("班组长已将工人移除班组")
|
||||||
|
.build();
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
workflowCoreClient.batchAbortProcessInstance(abortReqs);
|
||||||
|
}
|
||||||
|
// 现在工人退出平台班组,需先从项目内班组退出
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<OrgNodeDTO> listProjectTeam(OrganizationalTeamOuRelation ouRelation){
|
||||||
|
ListNodeReq listNodeReq = ListNodeReq.builder().platTeamIds(Sets.newHashSet(ouRelation.getTeamOuId())).build();
|
||||||
|
List<OrgNodeDTO> orgNodeDTOS = nodeService.list(listNodeReq);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(orgNodeDTOS)) {
|
||||||
|
log.info("忽略平台班组长移除工人操作,平台班组platTeamId=【{}】未加入项目", ouRelation.getTeamOuId());
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return orgNodeDTOS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void sendMQ(OrganizationalTeamOuRelation ouRelation, List<NodeUserDTO> nodeUserDTOS){
|
private void sendMQ(OrganizationalTeamOuRelation ouRelation, List<NodeUserDTO> nodeUserDTOS){
|
||||||
PlatWorkTeamGrantPositionReq build = PlatWorkTeamGrantPositionReq.builder()
|
PlatWorkTeamGrantPositionReq build = PlatWorkTeamGrantPositionReq.builder()
|
||||||
.platWorkTeamOuId(ouRelation.getTeamOuId())
|
.platWorkTeamOuId(ouRelation.getTeamOuId())
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package cn.axzo.orgmanax.server.project.worker.foundation;
|
package cn.axzo.orgmanax.server.project.worker.foundation;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.server.project.worker.foundation.req.DeleteOrgProjectWorkerReq;
|
||||||
import cn.axzo.orgmanax.server.project.worker.foundation.req.OrgProjectWorkerWithdrawReq;
|
import cn.axzo.orgmanax.server.project.worker.foundation.req.OrgProjectWorkerWithdrawReq;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -7,4 +8,7 @@ public interface OrgProjectWorkerFoundationService {
|
|||||||
|
|
||||||
@Transactional(rollbackFor = Throwable.class)
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
void batchWithdraw(OrgProjectWorkerWithdrawReq req);
|
void batchWithdraw(OrgProjectWorkerWithdrawReq req);
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
void deleteByParam(DeleteOrgProjectWorkerReq req);
|
||||||
}
|
}
|
||||||
@ -5,6 +5,7 @@ import cn.axzo.orgmanax.infra.dao.project.worker.entity.OrgProjectWorker;
|
|||||||
import cn.axzo.orgmanax.infra.dao.project.worker.repositrory.OrgProjectWorkerQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.project.worker.repositrory.OrgProjectWorkerQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.project.worker.repositrory.OrgProjectWorkerUpsertRepository;
|
import cn.axzo.orgmanax.infra.dao.project.worker.repositrory.OrgProjectWorkerUpsertRepository;
|
||||||
import cn.axzo.orgmanax.server.project.worker.foundation.OrgProjectWorkerFoundationService;
|
import cn.axzo.orgmanax.server.project.worker.foundation.OrgProjectWorkerFoundationService;
|
||||||
|
import cn.axzo.orgmanax.server.project.worker.foundation.req.DeleteOrgProjectWorkerReq;
|
||||||
import cn.axzo.orgmanax.server.project.worker.foundation.req.OrgProjectWorkerWithdrawReq;
|
import cn.axzo.orgmanax.server.project.worker.foundation.req.OrgProjectWorkerWithdrawReq;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
@ -49,4 +50,20 @@ public class OrgProjectWorkerFoundationServiceImpl implements OrgProjectWorkerFo
|
|||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
orgProjectWorkerUpsertRepository.batchUpdate(orgProjectWorkers);
|
orgProjectWorkerUpsertRepository.batchUpdate(orgProjectWorkers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteByParam(DeleteOrgProjectWorkerReq req) {
|
||||||
|
OrgProjectWorkerQueryRepository.ListReq listReq = new OrgProjectWorkerQueryRepository.ListReq();
|
||||||
|
listReq.setIds(req.getProjectWorkerIds());
|
||||||
|
List<OrgProjectWorkerQueryRepository.OrgProjectWorkerResp> projectWorkerResps = orgProjectWorkerQueryRepository.list(listReq);
|
||||||
|
if (CollUtil.isEmpty(projectWorkerResps)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<OrgProjectWorker> orgProjectWorkers = projectWorkerResps.stream().map(e -> {
|
||||||
|
OrgProjectWorker orgProjectWorker = BeanUtil.toBean(e, OrgProjectWorker.class);
|
||||||
|
e.setIsDelete(e.getId());
|
||||||
|
return orgProjectWorker;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
orgProjectWorkerUpsertRepository.batchUpdate(orgProjectWorkers);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.worker.foundation.req;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author zr
|
||||||
|
* @Date 2025/3/19 20:00
|
||||||
|
* @Description
|
||||||
|
**/
|
||||||
|
@Builder
|
||||||
|
@Data
|
||||||
|
public class DeleteOrgProjectWorkerReq {
|
||||||
|
private List<Long> projectWorkerIds;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user