|
|
@@ -1,21 +1,29 @@
|
|
|
package com.xunmei.core.reminder.service.impl;
|
|
|
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xunmei.common.core.constant.SecurityConstants;
|
|
|
import com.xunmei.common.core.domain.reminder.domain.CoreReminderConfiguration;
|
|
|
+import com.xunmei.common.core.domain.reminder.domain.CoreReminderConfigurationOrg;
|
|
|
import com.xunmei.common.core.domain.reminder.domain.CoreReminderConfigurationRole;
|
|
|
import com.xunmei.common.core.domain.reminder.dto.ReminderConfigEditDto;
|
|
|
+import com.xunmei.common.core.domain.reminder.dto.ReminderConfigPageDto;
|
|
|
+import com.xunmei.common.core.domain.reminder.vo.ReminderConfigDetailVo;
|
|
|
+import com.xunmei.common.core.domain.reminder.vo.ReminderConfigPageVo;
|
|
|
import com.xunmei.common.core.vo.IdNameVo;
|
|
|
+import com.xunmei.common.core.web.page.TableDataInfo;
|
|
|
import com.xunmei.core.reminder.mapper.CoreReminderConfigurationMapper;
|
|
|
+import com.xunmei.core.reminder.mapper.CoreReminderConfigurationOrgMapper;
|
|
|
import com.xunmei.core.reminder.mapper.CoreReminderConfigurationRoleMapper;
|
|
|
import com.xunmei.core.reminder.service.ICoreReminderConfigurationService;
|
|
|
import com.xunmei.system.api.Eto.RoleConditionEto;
|
|
|
import com.xunmei.system.api.RemoteOrgService;
|
|
|
import com.xunmei.system.api.RemoteRoleService;
|
|
|
import com.xunmei.system.api.domain.SysOrg;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
@@ -35,38 +43,92 @@ public class CoreReminderConfigurationServiceImpl extends ServiceImpl<CoreRemind
|
|
|
private RemoteRoleService roleService;
|
|
|
@Autowired
|
|
|
private CoreReminderConfigurationRoleMapper configurationRoleMapper;
|
|
|
+ @Autowired
|
|
|
+ private CoreReminderConfigurationOrgMapper coreReminderConfigurationOrgMapper;
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void editConfig(ReminderConfigEditDto editDto) {
|
|
|
- SysOrg sysOrg = orgService.selectOrgById(editDto.getOrgId(), SecurityConstants.INNER);
|
|
|
+ List<SysOrg> sysOrgList = orgService.selectByOrgIdList(editDto.getOrgIdList(), SecurityConstants.INNER);
|
|
|
List<IdNameVo> names = roleService.getNames(new RoleConditionEto(editDto.getRoleIdList()));
|
|
|
- if (editDto.getConfigId() == null) {
|
|
|
- CoreReminderConfiguration config = new CoreReminderConfiguration();
|
|
|
- //生成config所有字段的set方法
|
|
|
- config.setConfigId(IdWorker.getId());
|
|
|
- config.setReminderType(editDto.getReminderType());
|
|
|
- config.setSendModule(editDto.getSendModule());
|
|
|
- config.setOrgId(editDto.getOrgId());
|
|
|
- config.setOrgName(sysOrg.getName());
|
|
|
- config.setOrgPath(sysOrg.getPath());
|
|
|
- config.setOrgType(sysOrg.getType());
|
|
|
- if (editDto.getReminderType() == 0) {
|
|
|
- config.setOverdueNoticePeriod(editDto.getDay());
|
|
|
- } else {
|
|
|
- config.setAdvanceNoticePeriod(editDto.getDay());
|
|
|
- }
|
|
|
- config.setEnabled(editDto.getEnabled());
|
|
|
+ CoreReminderConfiguration config = getById(editDto.getConfigId());
|
|
|
+ if (config == null) {
|
|
|
+ config = new CoreReminderConfiguration();
|
|
|
+ populateBean(editDto, config);
|
|
|
save(config);
|
|
|
- for (Long roleId : editDto.getRoleIdList()) {
|
|
|
- CoreReminderConfigurationRole configurationRole = new CoreReminderConfigurationRole();
|
|
|
- configurationRole.setTargetRoleId(roleId);
|
|
|
- names.stream().filter(idNameVo -> idNameVo.getId().equals(roleId)).findAny().ifPresent(idNameVo -> {
|
|
|
- configurationRole.setTargetRoleName(idNameVo.getName());
|
|
|
- });
|
|
|
- configurationRole.setConfigId(config.getConfigId());
|
|
|
- configurationRoleMapper.insert(configurationRole);
|
|
|
- }
|
|
|
+ saveConfigurationRoles(config.getConfigId(), editDto.getRoleIdList(), names);
|
|
|
+ saveConfigurationOrgList(config.getConfigId(), sysOrgList);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ populateBean(editDto, config);
|
|
|
+ updateById(config);
|
|
|
+ configurationRoleMapper.deleteByConfigId(config.getConfigId());
|
|
|
+ saveConfigurationRoles(config.getConfigId(), editDto.getRoleIdList(), names);
|
|
|
+ coreReminderConfigurationOrgMapper.deleteByConfigId(config.getConfigId());
|
|
|
+ saveConfigurationOrgList(config.getConfigId(), sysOrgList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ReminderConfigDetailVo detail(String id) {
|
|
|
+
|
|
|
+ CoreReminderConfiguration configuration = getById(id);
|
|
|
+ if (configuration == null) {
|
|
|
+ throw new RuntimeException("未找到提醒配置");
|
|
|
}
|
|
|
+ ReminderConfigDetailVo detailVo = new ReminderConfigDetailVo();
|
|
|
+ BeanUtils.copyProperties(configuration, detailVo);
|
|
|
+ detailVo.setRoleList(configurationRoleMapper.selectByConfigId(configuration.getConfigId()));
|
|
|
+ detailVo.setOrgList(coreReminderConfigurationOrgMapper.selectByConfigId(configuration.getConfigId()));
|
|
|
+
|
|
|
+ return detailVo;
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<?> pageData(ReminderConfigPageDto req) {
|
|
|
+ SysOrg sysOrg = orgService.selectOrgById(req.getOrgId(), SecurityConstants.INNER);
|
|
|
+ if (sysOrg == null) {
|
|
|
+ throw new RuntimeException("未找到机构");
|
|
|
+ }
|
|
|
+ req.setOrgPath(sysOrg.getPath());
|
|
|
+ Page<ReminderConfigPageVo> page = baseMapper.selectPageData(req.toPage(), req);
|
|
|
+ return TableDataInfo.build(page);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void populateBean(ReminderConfigEditDto editDto, CoreReminderConfiguration config) {
|
|
|
+ config.setReminderType(editDto.getReminderType());
|
|
|
+ config.setSendModule(editDto.getSendModule());
|
|
|
+ if (editDto.getReminderType() == 0) {
|
|
|
+ config.setOverdueNoticePeriod(editDto.getDay());
|
|
|
+ } else {
|
|
|
+ config.setAdvanceNoticePeriod(editDto.getDay());
|
|
|
+ }
|
|
|
+ config.setEnabled(editDto.getEnabled());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveConfigurationRoles(Long configId, List<Long> roleIdList, List<IdNameVo> names) {
|
|
|
+ for (Long roleId : roleIdList) {
|
|
|
+ CoreReminderConfigurationRole configurationRole = new CoreReminderConfigurationRole();
|
|
|
+ configurationRole.setTargetRoleId(roleId);
|
|
|
+ String targetRoleName = names.stream()
|
|
|
+ .filter(idNameVo -> idNameVo.getId().equals(roleId))
|
|
|
+ .map(IdNameVo::getName)
|
|
|
+ .findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ configurationRole.setTargetRoleName(targetRoleName);
|
|
|
+ configurationRole.setConfigId(configId);
|
|
|
+ configurationRoleMapper.insert(configurationRole);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveConfigurationOrgList(Long configId, List<SysOrg> orgList) {
|
|
|
+ for (SysOrg sysOrg : orgList) {
|
|
|
+ CoreReminderConfigurationOrg configurationOrg = new CoreReminderConfigurationOrg();
|
|
|
+ configurationOrg.setTargetOrgId(sysOrg.getId());
|
|
|
+ configurationOrg.setTargetOrgName(sysOrg.getName());
|
|
|
+ configurationOrg.setTargetOrgType(sysOrg.getType());
|
|
|
+ configurationOrg.setTargetOrgPath(sysOrg.getPath());
|
|
|
+ configurationOrg.setConfigId(configId);
|
|
|
+ coreReminderConfigurationOrgMapper.insert(configurationOrg);
|
|
|
+ }
|
|
|
}
|
|
|
}
|