|
@@ -5,14 +5,20 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
|
|
+import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
|
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
|
import cn.iocoder.yudao.module.bpm.api.business.BpmBusinessFormApi;
|
|
import cn.iocoder.yudao.module.bpm.api.business.BpmBusinessFormApi;
|
|
|
import cn.iocoder.yudao.module.bpm.api.business.dto.BpmBusinessFormCreateReqDTO;
|
|
import cn.iocoder.yudao.module.bpm.api.business.dto.BpmBusinessFormCreateReqDTO;
|
|
|
|
|
+import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.AskLeavePageReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.AskLeavePageReqVO;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyAskLeaveExportExcelVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyAskLeaveExportExcelVO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.*;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.*;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.*;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.*;
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.tenant.TenantMapper;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.tenant.TenantMapper;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.sys.BusinessParamsConfigDO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.sys.BusinessParamsConfigMapper;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
|
|
|
import cn.iocoder.yudao.module.system.enums.change.BusinessConstants;
|
|
import cn.iocoder.yudao.module.system.enums.change.BusinessConstants;
|
|
|
import cn.iocoder.yudao.module.system.enums.change.BusinessTypeEnum;
|
|
import cn.iocoder.yudao.module.system.enums.change.BusinessTypeEnum;
|
|
|
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
|
|
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
|
|
@@ -48,6 +54,7 @@ import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
|
|
|
public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
|
|
public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
|
|
|
|
|
|
|
|
private static final DateTimeFormatter HH_MM_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
|
|
private static final DateTimeFormatter HH_MM_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
|
|
|
|
|
+ private static final String OUTBOUND_REGISTRATION_START_USER_ID_CONFIG_CODE = "OUTBOUND_REGISTRATION_START_USER_ID";
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private ElderlyAskLeaveMapper elderlyAskLeaveMapper;
|
|
private ElderlyAskLeaveMapper elderlyAskLeaveMapper;
|
|
@@ -98,6 +105,12 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
|
|
|
@Resource
|
|
@Resource
|
|
|
private BpmBusinessFormApi bpmBusinessFormApi;
|
|
private BpmBusinessFormApi bpmBusinessFormApi;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private BpmProcessInstanceApi processInstanceApi;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private AdminUserMapper adminUserMapper;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@LogRecord(type = ELDERLY_ASK_LEAVE_TYPE, subType = ELDERLY_ASK_LEAVE_CREATE_SUB_TYPE, bizNo = "{{#createReqVO.id}}",
|
|
@LogRecord(type = ELDERLY_ASK_LEAVE_TYPE, subType = ELDERLY_ASK_LEAVE_CREATE_SUB_TYPE, bizNo = "{{#createReqVO.id}}",
|
|
@@ -110,6 +123,7 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Long createAskLeaveBpm(ElderlyAskLeaveDO createReqVO) {
|
|
public Long createAskLeaveBpm(ElderlyAskLeaveDO createReqVO) {
|
|
|
|
|
+ createReqVO.setOrgType(1);
|
|
|
createReqVO.setCreateDate(new Date());
|
|
createReqVO.setCreateDate(new Date());
|
|
|
if (createReqVO.getCreateBy() == null) {
|
|
if (createReqVO.getCreateBy() == null) {
|
|
|
createReqVO.setCreateBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
createReqVO.setCreateBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
@@ -119,14 +133,26 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
|
|
|
}
|
|
}
|
|
|
elderlyAskLeaveMapper.insert(createReqVO);
|
|
elderlyAskLeaveMapper.insert(createReqVO);
|
|
|
|
|
|
|
|
|
|
+ Long startUserId = resolveOutboundRegistrationStartUserId(createReqVO.getTenantId());
|
|
|
|
|
+ if (startUserId == null) {
|
|
|
|
|
+ startUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
BpmBusinessFormCreateReqDTO bpmReqDTO = new BpmBusinessFormCreateReqDTO();
|
|
BpmBusinessFormCreateReqDTO bpmReqDTO = new BpmBusinessFormCreateReqDTO();
|
|
|
bpmReqDTO.setBusinessId(createReqVO.getId());
|
|
bpmReqDTO.setBusinessId(createReqVO.getId());
|
|
|
bpmReqDTO.setBusinessId2(createReqVO.getElderId());
|
|
bpmReqDTO.setBusinessId2(createReqVO.getElderId());
|
|
|
bpmReqDTO.setTenantId(createReqVO.getTenantId());
|
|
bpmReqDTO.setTenantId(createReqVO.getTenantId());
|
|
|
bpmReqDTO.setType(BusinessTypeEnum.OUTBOUND_REGISTRATION.getValue());
|
|
bpmReqDTO.setType(BusinessTypeEnum.OUTBOUND_REGISTRATION.getValue());
|
|
|
|
|
+ bpmReqDTO.setUserId(startUserId);
|
|
|
return bpmBusinessFormApi.createBusinessForm(bpmReqDTO);
|
|
return bpmBusinessFormApi.createBusinessForm(bpmReqDTO);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private Long resolveOutboundRegistrationStartUserId(Long tenantId) {
|
|
|
|
|
+ return adminUserMapper.selectOne(new LambdaQueryWrapperX<AdminUserDO>()
|
|
|
|
|
+ .eq(AdminUserDO::getTenantId, tenantId)
|
|
|
|
|
+ .eq(AdminUserDO::getUsername, "admin")).getId();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional
|
|
@Transactional
|
|
|
public void editAskLeave(ElderlyAskLeaveDO elderlyAskLeaveDO) {
|
|
public void editAskLeave(ElderlyAskLeaveDO elderlyAskLeaveDO) {
|
|
@@ -727,13 +753,35 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional
|
|
|
public void delete(Long id) {
|
|
public void delete(Long id) {
|
|
|
- List<ElderlyAskLeaveDailyExpenseRelationDO> elderlyAskLeaveDailyExpenseRelationList = elderlyAskLeaveDailyExpenseRelationMapper.selectList(new LambdaQueryWrapperX<ElderlyAskLeaveDailyExpenseRelationDO>()
|
|
|
|
|
- .eq(ElderlyAskLeaveDailyExpenseRelationDO::getAskLeaveId, id));
|
|
|
|
|
- for (ElderlyAskLeaveDailyExpenseRelationDO elderlyAskLeaveDailyExpenseRelationDO : elderlyAskLeaveDailyExpenseRelationList) {
|
|
|
|
|
- dailyExpensesService.deleteDailyExpenses(elderlyAskLeaveDailyExpenseRelationDO.getDailyExpenseId());
|
|
|
|
|
|
|
+ ElderlyAskLeaveDO askLeave = elderlyAskLeaveMapper.selectById(id);
|
|
|
|
|
+ if (askLeave == null) {
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
- elderlyAskLeaveMapper.deleteById(id);
|
|
|
|
|
|
|
+ Long tenantId = askLeave.getTenantId() != null ? askLeave.getTenantId() : TenantContextHolder.getTenantId();
|
|
|
|
|
+ TenantUtils.execute(tenantId, () -> {
|
|
|
|
|
+ try {
|
|
|
|
|
+ String processInstanceId = processInstanceApi.getProcessInstanceId(String.valueOf(id));
|
|
|
|
|
+ if (processInstanceId != null && !processInstanceId.isEmpty()) {
|
|
|
|
|
+ Long operatorUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
|
|
+ if (operatorUserId == null) {
|
|
|
|
|
+ operatorUserId = resolveOutboundRegistrationStartUserId(tenantId);
|
|
|
|
|
+ }
|
|
|
|
|
+ processInstanceApi.deleteProcessInstanceCascade(operatorUserId, processInstanceId, "外出登记删除");
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("删除外出登记流程失败,askLeaveId={}, tenantId={}", id, tenantId, e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<ElderlyAskLeaveDailyExpenseRelationDO> elderlyAskLeaveDailyExpenseRelationList = elderlyAskLeaveDailyExpenseRelationMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapperX<ElderlyAskLeaveDailyExpenseRelationDO>()
|
|
|
|
|
+ .eq(ElderlyAskLeaveDailyExpenseRelationDO::getAskLeaveId, id));
|
|
|
|
|
+ for (ElderlyAskLeaveDailyExpenseRelationDO elderlyAskLeaveDailyExpenseRelationDO : elderlyAskLeaveDailyExpenseRelationList) {
|
|
|
|
|
+ dailyExpensesService.deleteDailyExpenses(elderlyAskLeaveDailyExpenseRelationDO.getDailyExpenseId());
|
|
|
|
|
+ }
|
|
|
|
|
+ elderlyAskLeaveMapper.deleteById(id);
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|