2023-07-20 09:58:27 +08:00
|
|
|
//package com.engine.salary.service.impl;
|
|
|
|
|
//
|
|
|
|
|
//import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
|
|
|
|
//import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
2023-08-08 19:39:53 +08:00
|
|
|
//import com.engine.salary.entity.taxagent.po.TaxAgentEmployeePO;
|
|
|
|
|
//import com.engine.salary.entity.taxapiflow.dto.TaxDeclarationApiFlowWarnReceiverListDTO;
|
2023-07-20 09:58:27 +08:00
|
|
|
//import com.engine.salary.entity.taxapiflow.po.TaxDeclarationApiFlowWarnConfigPO;
|
2023-08-08 19:39:53 +08:00
|
|
|
//import com.engine.salary.entity.taxapiflow.po.TaxDeclarationApiFlowWarnReceiverPO;
|
2023-07-20 09:58:27 +08:00
|
|
|
//import com.engine.salary.mapper.taxdeclaration.TaxDeclarationApiFlowWarnConfigMapper;
|
|
|
|
|
//import com.engine.salary.service.SalaryEmployeeService;
|
|
|
|
|
//import com.engine.salary.service.TaxDeclarationApiFlowWarnService;
|
2023-08-08 19:39:53 +08:00
|
|
|
//import com.engine.salary.util.SalaryEntityUtil;
|
2023-07-20 09:58:27 +08:00
|
|
|
//import com.weaver.common.base.entity.result.WeaResult;
|
|
|
|
|
//import com.weaver.common.distribution.genid.IdGenerator;
|
|
|
|
|
//import com.weaver.framework.spring.annotation.AopClass;
|
|
|
|
|
//import com.weaver.hrm.salary.common.OptionDTO;
|
|
|
|
|
//import com.weaver.hrm.salary.dao.TaxDeclarationApiFlowWarnReceiverMapper;
|
|
|
|
|
//import com.weaver.hrm.salary.entity.taxapiflow.bo.TaxApiFlowBO;
|
|
|
|
|
//import com.weaver.hrm.salary.entity.taxapiflow.dto.TaxDeclarationApiFlowWarnReceiverFormDTO;
|
|
|
|
|
//import com.weaver.hrm.salary.entity.taxapiflow.param.CreateMessageRuleParam;
|
|
|
|
|
//import com.weaver.hrm.salary.entity.taxapiflow.param.TaxDeclarationApiFlowWarnConfigSaveParam;
|
|
|
|
|
//import com.weaver.hrm.salary.entity.taxapiflow.param.TaxDeclarationApiFlowWarnReceiverSaveParam;
|
|
|
|
|
//import com.weaver.hrm.salary.entity.taxapiflow.response.QueryAccountBalanceResponse;
|
|
|
|
|
//import com.weaver.hrm.salary.enums.salaryitem.SalaryOnOffEnum;
|
|
|
|
|
//import com.weaver.hrm.salary.enums.sicategory.DeleteTypeEnum;
|
|
|
|
|
//import com.weaver.hrm.salary.service.TaxAgentService;
|
|
|
|
|
//import com.weaver.hrm.salary.service.TaxDeclarationApiFlowStatisticService;
|
|
|
|
|
//import com.weaver.hrm.salary.util.SalaryAssert;
|
|
|
|
|
//import com.weaver.hrm.salary.util.SalaryI18nUtil;
|
|
|
|
|
//import com.weaver.mc.api.async.AsyncSystemMessageRest;
|
|
|
|
|
//import com.weaver.mc.api.entity.*;
|
|
|
|
|
//import com.weaver.mc.api.rest.RuleRest;
|
|
|
|
|
//import com.weaver.teams.domain.user.SimpleEmployee;
|
|
|
|
|
//import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
//import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
//import org.springframework.stereotype.Service;
|
|
|
|
|
//import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
//
|
|
|
|
|
//import java.time.LocalDateTime;
|
|
|
|
|
//import java.util.Collections;
|
|
|
|
|
//import java.util.List;
|
|
|
|
|
//import java.util.Map;
|
|
|
|
|
//import java.util.Objects;
|
|
|
|
|
//import java.util.stream.Collectors;
|
|
|
|
|
//
|
|
|
|
|
///**
|
|
|
|
|
// * @author chengliming
|
|
|
|
|
// * @date 2022-11-11 2:57 PM
|
|
|
|
|
// **/
|
|
|
|
|
//@Service
|
|
|
|
|
//@Slf4j
|
|
|
|
|
//@AopClass
|
|
|
|
|
//public class TaxDeclarationApiFlowWarnServiceImpl implements TaxDeclarationApiFlowWarnService {
|
|
|
|
|
// private TaxDeclarationApiFlowWarnConfigMapper taxDeclarationApiFlowWarnConfigMapper;
|
|
|
|
|
// private TaxDeclarationApiFlowWarnReceiverMapper taxDeclarationApiFlowWarnReceiverMapper;
|
|
|
|
|
// private SalaryEmployeeService salaryEmployeeService;
|
|
|
|
|
// private RuleRest ruleRest;
|
|
|
|
|
// private AsyncSystemMessageRest asyncSystemMessageRest;
|
|
|
|
|
// private TaxAgentService taxAgentService;
|
|
|
|
|
// private TaxDeclarationApiFlowStatisticService taxDeclarationApiFlowStatisticService;
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
|
|
|
|
// public TaxDeclarationApiFlowWarnConfigPO getWarnConfig(String currentTenantKey) {
|
|
|
|
|
// return new LambdaQueryChainWrapper<>(taxDeclarationApiFlowWarnConfigMapper)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnConfigPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue())
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnConfigPO::getTenantKey, currentTenantKey)
|
|
|
|
|
// .one();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
|
|
|
|
// public List<TaxDeclarationApiFlowWarnReceiverListDTO> getWarnReceiverList(Long warnConfigId, String currentTenantKey) {
|
|
|
|
|
// List<TaxDeclarationApiFlowWarnReceiverPO> receiverPOList = new LambdaQueryChainWrapper<>(taxDeclarationApiFlowWarnReceiverMapper)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue())
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getTenantKey, currentTenantKey)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getWarnConfigId, warnConfigId)
|
|
|
|
|
// .list();
|
|
|
|
|
//
|
|
|
|
|
// List<TaxAgentEmployeePO> salaryEmployees = taxAgentService.listEmployees(currentTenantKey);
|
|
|
|
|
// Map<Long, String> salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, TaxAgentEmployeePO::getEmployeeId, TaxAgentEmployeePO::getUsername);
|
|
|
|
|
//
|
|
|
|
|
// return receiverPOList.stream().map(e -> TaxDeclarationApiFlowWarnReceiverListDTO.builder()
|
|
|
|
|
// .employeeName(salaryEmployeeMap.get(e.getEmployeeId()))
|
|
|
|
|
// .employeeId(e.getEmployeeId())
|
|
|
|
|
// .mobile(e.getMobile())
|
|
|
|
|
// .email(e.getEmail())
|
|
|
|
|
// .id(e.getId())
|
|
|
|
|
// .build()).collect(Collectors.toList());
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
// public void deleteReceiver(Long id, String currentTenantKey) {
|
|
|
|
|
// TaxDeclarationApiFlowWarnReceiverPO receiverPO = getWarnReceiverPOById(id, currentTenantKey);
|
|
|
|
|
// SalaryAssert.notNull(receiverPO, "该提醒对象不存在,请刷新页面后重试");
|
|
|
|
|
// new LambdaUpdateChainWrapper<>(taxDeclarationApiFlowWarnReceiverMapper)
|
|
|
|
|
// .set(TaxDeclarationApiFlowWarnReceiverPO::getDeleteType, DeleteTypeEnum.DELETED.getValue())
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getId, id)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getTenantKey, currentTenantKey)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue())
|
|
|
|
|
// .update();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
2023-08-17 14:55:32 +08:00
|
|
|
// public TaxDeclarationApiFlowWarnReceiverFormDTO getWarnReceiverFormById(Long id) {
|
2023-07-20 09:58:27 +08:00
|
|
|
// TaxDeclarationApiFlowWarnReceiverPO receiverPO = getWarnReceiverPOById(id, currentTenantKey);
|
|
|
|
|
// SalaryAssert.notNull(receiverPO, "该提醒对象不存在,请刷新页面后重试");
|
|
|
|
|
// // 查找人员信息
|
|
|
|
|
// List<SimpleEmployee> simpleEmployees = salaryEmployeeService.listAll(currentTenantKey);
|
|
|
|
|
// Map<Long, SimpleEmployee> empMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getEmployeeId);
|
|
|
|
|
// SimpleEmployee simpleEmployee = empMap.get(receiverPO.getEmployeeId());
|
2023-08-17 14:55:32 +08:00
|
|
|
// SalaryAssert.notNull(simpleEmployee, SalaryI18nUtil.getI18nLabel( 139811, "人员不存在"));
|
2023-07-20 09:58:27 +08:00
|
|
|
//
|
|
|
|
|
// return TaxDeclarationApiFlowWarnReceiverFormDTO.builder()
|
|
|
|
|
// .id(receiverPO.getId())
|
|
|
|
|
// .employee(Collections.singletonList(new OptionDTO(receiverPO.getEmployeeId().toString(), simpleEmployee.getUsername())))
|
|
|
|
|
// .email(receiverPO.getEmail())
|
|
|
|
|
// .mobile(receiverPO.getMobile())
|
|
|
|
|
// .emailOptions(StringUtils.isNotEmpty(simpleEmployee.getEmail()) ? Collections.singletonList(simpleEmployee.getEmail()) : null)
|
|
|
|
|
// .build();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// private TaxDeclarationApiFlowWarnReceiverPO getWarnReceiverPOById(Long id, String currentTenantKey) {
|
|
|
|
|
// return new LambdaQueryChainWrapper<>(taxDeclarationApiFlowWarnReceiverMapper)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue())
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getId, id)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getTenantKey, currentTenantKey)
|
|
|
|
|
// .one();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
2023-08-17 14:55:32 +08:00
|
|
|
// public void saveWarnReceiver(TaxDeclarationApiFlowWarnReceiverSaveParam param) {
|
2023-07-20 09:58:27 +08:00
|
|
|
// if (param.getId() != null) {
|
|
|
|
|
// TaxDeclarationApiFlowWarnReceiverPO receiverPO = getWarnReceiverPOById(param.getId(), currentTenantKey);
|
|
|
|
|
// SalaryAssert.notNull(receiverPO, "该提醒对象不存在,请刷新页面后重试");
|
|
|
|
|
// if (param.getEmployeeId() != null && !receiverPO.getEmployeeId().equals(param.getEmployeeId())) {
|
|
|
|
|
// filterByEmpId(param, currentTenantKey);
|
|
|
|
|
// receiverPO.setEmployeeId(param.getEmployeeId());
|
|
|
|
|
// }
|
|
|
|
|
// receiverPO.setUpdateTime(LocalDateTime.now());
|
|
|
|
|
// receiverPO.setEmail(param.getEmail());
|
|
|
|
|
// receiverPO.setMobile(param.getMobile());
|
|
|
|
|
// taxDeclarationApiFlowWarnReceiverMapper.updateById(receiverPO);
|
|
|
|
|
// } else {
|
|
|
|
|
// filterByEmpId(param, currentTenantKey);
|
|
|
|
|
// TaxDeclarationApiFlowWarnReceiverPO receiverPO = TaxDeclarationApiFlowWarnReceiverPO.builder()
|
|
|
|
|
// .id(IdGenerator.generate())
|
|
|
|
|
// .email(param.getEmail())
|
|
|
|
|
// .mobile(param.getMobile())
|
|
|
|
|
// .employeeId(param.getEmployeeId())
|
|
|
|
|
// .warnConfigId(param.getWarnConfigId())
|
|
|
|
|
// .createTime(LocalDateTime.now())
|
|
|
|
|
// .updateTime(LocalDateTime.now())
|
|
|
|
|
// .deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
|
|
|
|
|
// .tenantKey(currentTenantKey)
|
|
|
|
|
// .creator(currentEmployeeId)
|
|
|
|
|
// .build();
|
|
|
|
|
// taxDeclarationApiFlowWarnReceiverMapper.insert(receiverPO);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// private void filterByEmpId(TaxDeclarationApiFlowWarnReceiverSaveParam param, String currentTenantKey) {
|
|
|
|
|
// List<TaxDeclarationApiFlowWarnReceiverPO> another = new LambdaQueryChainWrapper<>(taxDeclarationApiFlowWarnReceiverMapper)
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue())
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getWarnConfigId, param.getWarnConfigId())
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getEmployeeId, param.getEmployeeId())
|
|
|
|
|
// .eq(TaxDeclarationApiFlowWarnReceiverPO::getTenantKey, currentTenantKey)
|
|
|
|
|
// .list();
|
|
|
|
|
// SalaryAssert.isEmpty(another, SalaryI18nUtil.getI18nLabel(184007, "当前人员对应的提醒对象已存在,请更换人员后尝试"));
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
2023-08-17 14:55:32 +08:00
|
|
|
// public void createMessageRule(CreateMessageRuleParam param) {
|
2023-07-20 09:58:27 +08:00
|
|
|
// CreateRuleEntity createRule = new CreateRuleEntity()
|
|
|
|
|
// .setBusinessId(param.getBusinessId())
|
|
|
|
|
// .setEvent(MessageEvent.PAYROLL)
|
|
|
|
|
// .setModule(MessageModule.HRSA)
|
|
|
|
|
// .setConfig(param.getConfig());
|
|
|
|
|
// log.info("RuleRest.createRuleV2 -> config ====== {}", param.getConfig());
|
|
|
|
|
// WeaResult<Long> weaResult = ruleRest.createRuleV2(createRule);
|
|
|
|
|
// SalaryAssert.isTrue(weaResult.isStatus(), SalaryI18nUtil.getI18nLabel(184008, "RPC接口创建规则失败"));
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
2023-08-17 14:55:32 +08:00
|
|
|
// public String saveWarnConfig(TaxDeclarationApiFlowWarnConfigSaveParam param) {
|
2023-07-20 09:58:27 +08:00
|
|
|
// TaxDeclarationApiFlowWarnConfigPO warnConfigPO;
|
|
|
|
|
// if (param.getId() != null) {
|
|
|
|
|
// warnConfigPO = taxDeclarationApiFlowWarnConfigMapper.selectById(param.getId());
|
|
|
|
|
// SalaryAssert.notNull(warnConfigPO, "提醒规则不存在,请先保存");
|
|
|
|
|
// warnConfigPO.setThreshold(param.getThreshold());
|
|
|
|
|
// warnConfigPO.setEnableWarn(param.getEnable() ? 1 : 0);
|
|
|
|
|
// warnConfigPO.setUpdateTime(LocalDateTime.now());
|
|
|
|
|
// taxDeclarationApiFlowWarnConfigMapper.updateById(warnConfigPO);
|
|
|
|
|
// } else {
|
|
|
|
|
// warnConfigPO = TaxDeclarationApiFlowWarnConfigPO.builder()
|
|
|
|
|
// .id(IdGenerator.generate())
|
|
|
|
|
// .businessId(param.getBusinessId())
|
|
|
|
|
// .threshold(param.getThreshold())
|
|
|
|
|
// .enableWarn(param.getEnable() ? 1 : 0)
|
|
|
|
|
// .createTime(LocalDateTime.now())
|
|
|
|
|
// .updateTime(LocalDateTime.now())
|
|
|
|
|
// .creator(currentEmployeeId)
|
|
|
|
|
// .deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
|
|
|
|
|
// .tenantKey(currentTenantKey)
|
|
|
|
|
// .build();
|
|
|
|
|
// taxDeclarationApiFlowWarnConfigMapper.insert(warnConfigPO);
|
|
|
|
|
// }
|
|
|
|
|
// if (StringUtils.isNotEmpty(param.getConfig())) {
|
|
|
|
|
// CreateRuleEntity createRule = new CreateRuleEntity()
|
2023-08-17 14:55:32 +08:00
|
|
|
// .setName(SalaryI18nUtil.getI18nLabel( 159146, "流量不足提醒"))
|
2023-07-20 09:58:27 +08:00
|
|
|
// .setUser(new UserEntity(currentEmployeeId, currentTenantKey))
|
|
|
|
|
// .setModule(MessageModule.HRSA)
|
|
|
|
|
// .setEvent(MessageEvent.PAYROLL)
|
|
|
|
|
// .setBusinessId(param.getBusinessId().toString())
|
|
|
|
|
// .setConfig(param.getConfig());
|
|
|
|
|
// log.info("RuleRest.createRuleV2 -> config ====== {}", param.getConfig());
|
|
|
|
|
// WeaResult<Long> weaResult = ruleRest.createRuleV2(createRule);
|
|
|
|
|
// SalaryAssert.isTrue(weaResult.isStatus(), SalaryI18nUtil.getI18nLabel(184008, "RPC接口创建规则失败"));
|
|
|
|
|
// }
|
|
|
|
|
// return warnConfigPO.getId().toString();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
|
|
|
|
// public Long getRuleBusinessId(String currentTenantKey) {
|
|
|
|
|
// TaxDeclarationApiFlowWarnConfigPO warnConfig = this.getWarnConfig(currentTenantKey);
|
|
|
|
|
// return warnConfig == null ? IdGenerator.generate() : warnConfig.getBusinessId();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Override
|
|
|
|
|
// public void sendFlowWarnMessage(TaxDeclarationApiBillingServiceImpl.ApiFlowUpdateWrapper updateWrapper) {
|
|
|
|
|
// TaxDeclarationApiFlowWarnConfigPO warnConfig = getWarnConfig(updateWrapper.getTenantKey());
|
|
|
|
|
// // 未配置或开关关闭
|
|
|
|
|
// if (Objects.isNull(warnConfig) || SalaryOnOffEnum.OFF.getValue().equals(warnConfig.getEnableWarn())) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// QueryAccountBalanceResponse response = taxDeclarationApiFlowStatisticService.getQueryAccountBalanceResponse(updateWrapper.getApiConfig());
|
|
|
|
|
// // 剩余流量大于阈值无需提醒
|
|
|
|
|
// if (StringUtils.isNotEmpty(response.getBody().getSurplus()) && Long.parseLong(response.getBody().getSurplus()) > warnConfig.getThreshold()) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// List<TaxDeclarationApiFlowWarnReceiverListDTO> warnReceiverList = getWarnReceiverList(warnConfig.getId(), updateWrapper.getTenantKey());
|
|
|
|
|
// if (warnReceiverList.isEmpty()) {
|
|
|
|
|
// log.info("warnReceiverList is empty, send msg fail");
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// List<UserEntity> receivers = warnReceiverList.stream().map(e ->
|
|
|
|
|
// new UserEntity(e.getEmployeeId(), updateWrapper.getTenantKey())
|
|
|
|
|
// .setEmail(e.getEmail()).setPhone(e.getMobile()).setLanguage(6)
|
|
|
|
|
// ).collect(Collectors.toList());
|
|
|
|
|
// // 组装消息对象
|
|
|
|
|
// SendMessageEntity smg = TaxApiFlowBO.buildSendMessageEntity(warnConfig, receivers, updateWrapper);
|
|
|
|
|
// // 发送消息
|
|
|
|
|
// WeaResult<Long> weaResult = asyncSystemMessageRest.sendMsg(smg);
|
|
|
|
|
// SalaryAssert.isTrue(weaResult.isStatus(), SalaryI18nUtil.getI18nLabel(184009, "流量不足提醒发送失败"));
|
|
|
|
|
// }
|
|
|
|
|
//}
|