Browse Source

合并

master
1747191978@qq.com 3 months ago
parent
commit
3d9654270e
  1. 71
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/system/SysLoginController.java
  2. 4
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/system/SysUserController.java
  3. 19
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/AdminDmsUserController.java
  4. 23
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/AdminPmsTreatmentController.java
  5. 21
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java
  6. 5
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ExternalController.java
  7. 3
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java
  8. 6
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ScreeningController.java
  9. 368
      acupuncture-admin/src/main/java/com/acupuncture/web/task/TaskController.java
  10. 3
      acupuncture-common/src/main/java/com/acupuncture/common/core/domain/entity/SysUser.java
  11. 9
      acupuncture-framework/src/main/java/com/acupuncture/framework/aspectj/AdminGlobalDataSourceAspect.java
  12. 2
      acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java
  13. 48
      acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/SysLoginService.java
  14. 50
      acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/WebDmsLoginService.java
  15. 7
      acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/AdminTenantUserDto.java
  16. 2
      acupuncture-system/src/main/java/com/acupuncture/system/mapper/SysRoleMapper.java
  17. 1
      acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java
  18. 21
      acupuncture-system/src/main/resources/mapper/system/SysUserMapper.xml

71
acupuncture-admin/src/main/java/com/acupuncture/web/controller/system/SysLoginController.java

@ -3,6 +3,8 @@ package com.acupuncture.web.controller.system;
import java.util.List;
import java.util.Set;
import com.acupuncture.common.annotation.DataSource;
import com.acupuncture.common.enums.DataSourceType;
import com.acupuncture.system.domain.po.DmsTenant;
import com.acupuncture.system.persist.mapper.DmsTenantMapper;
import com.acupuncture.system.service.ISysUserService;
@ -66,23 +68,41 @@ public class SysLoginController
return ajax;
}
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/loginSimple")
public AjaxResult loginSimple(@RequestBody LoginBody loginBody)
{
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.loginSimple(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 获取用户信息
*
*
* @return 用户信息
*/
@GetMapping("getInfo")
public AjaxResult getInfo()
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = sysUserService.selectUserByTenantId(null, loginUser.getUsername());
if (user.getTenantId() != null) {
DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(user.getTenantId());
if (dmsTenant != null) {
user.setTenantName(dmsTenant.getName());
user.setTenantPhone(dmsTenant.getContactPhone());
}
}
SysUser user = sysUserService.selectUserById(loginUser.getUser().getUserId());
// SysUser user = sysUserService.selectUserByTenantId(null, loginUser.getUsername());
// if (user.getTenantId() != null) {
// DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(user.getTenantId());
// if (dmsTenant != null) {
// user.setTenantName(dmsTenant.getName());
// user.setTenantPhone(dmsTenant.getContactPhone());
// }
// }
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
@ -99,6 +119,39 @@ public class SysLoginController
return ajax;
}
// /**
// * 获取用户信息
// *
// * @return 用户信息
// */
// @GetMapping("getInfo")
// public AjaxResult getInfo()
// {
// LoginUser loginUser = SecurityUtils.getLoginUser();
// SysUser user = sysUserService.selectUserByTenantId(null, loginUser.getUsername());
// if (user.getTenantId() != null) {
// DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(user.getTenantId());
// if (dmsTenant != null) {
// user.setTenantName(dmsTenant.getName());
// user.setTenantPhone(dmsTenant.getContactPhone());
// }
// }
// // 角色集合
// Set<String> roles = permissionService.getRolePermission(user);
// // 权限集合
// Set<String> permissions = permissionService.getMenuPermission(user);
// if (!loginUser.getPermissions().equals(permissions))
// {
// loginUser.setPermissions(permissions);
// tokenService.refreshToken(loginUser);
// }
// AjaxResult ajax = AjaxResult.success();
// ajax.put("user", user);
// ajax.put("roles", roles);
// ajax.put("permissions", permissions);
// return ajax;
// }
/**
* 获取路由信息
*

4
acupuncture-admin/src/main/java/com/acupuncture/web/controller/system/SysUserController.java

@ -165,7 +165,6 @@ public class SysUserController extends BaseController
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysUser user)
{
// changeDataSource(user.getTenantId());
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
deptService.checkDeptDataScope(user.getDeptId());
@ -186,6 +185,7 @@ public class SysUserController extends BaseController
return toAjax(userService.updateUser(user));
}
<<<<<<< HEAD
private void changeDataSource(Long tenantId) {
DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(tenantId);
if (dmsTenant != null) {
@ -200,6 +200,8 @@ public class SysUserController extends BaseController
}
}
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
/**
* 删除用户
*/

19
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/AdminDmsUserController.java

@ -89,8 +89,12 @@ public class AdminDmsUserController {
adminTenantUserService.insert(dto);
//切换至从库
<<<<<<< HEAD
changeDataSource(umsDataSource.getDataSourceKey());
=======
DynamicDataSourceContextHolder.setDataSourceType(umsDataSource.getDataSourceKey());
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
//新增从库数据
SysUser user = BeanUtil.copyProperties(dto, SysUser.class);
if (!userService.checkUserNameUnique(user)) {
@ -104,10 +108,16 @@ public class AdminDmsUserController {
user.setCreateBy(SecurityUtils.getUsername());
user.setPhonenumber(dto.getContactPhone());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
user.setTenantName(dmsTenant.getName());
user.setTenantPhone(dmsTenant.getContactPhone());
int insert = userService.insertUser(user);
//销毁切换数据源
<<<<<<< HEAD
removeDataSource();
=======
DynamicDataSourceContextHolder.clearDataSourceType();
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
return JsonResponse.ok(insert);
}
@ -132,11 +142,13 @@ public class AdminDmsUserController {
if (CollectionUtil.isNotEmpty(tenantList)) {
for (AdminTenantsVo.Result result : tenantList) {
//切换数据源 删除分库数据
changeDataSource(result.getDataSourceKey());
DynamicDataSourceContextHolder.setDataSourceType(result.getDataSourceKey());
//修改分库用户
SysUser sysUser = BeanUtil.copyProperties(dto, SysUser.class);
sysUser.setPhonenumber(dto.getContactPhone());
userService.updateUser(sysUser);
//销毁切换数据源
DynamicDataSourceContextHolder.clearDataSourceType();
}
}
}
@ -162,7 +174,7 @@ public class AdminDmsUserController {
if (CollectionUtil.isNotEmpty(tenantList)) {
for (AdminTenantsVo.Result result : tenantList) {
//切换数据源 删除分库数据
changeDataSource(result.getDataSourceKey());
DynamicDataSourceContextHolder.setDataSourceType(result.getDataSourceKey());
//删除分库用户
userService.deleteUserByUsername(dmsUser.getUserName());
}
@ -180,6 +192,7 @@ public class AdminDmsUserController {
return JsonResponse.ok(new PageInfo<>(adminTenantUserService.query(dto.getParam())));
}
<<<<<<< HEAD
private static void changeDataSource(String key) {
DynamicDataSourceContextHolder.setDataSourceType(key);
}
@ -187,4 +200,6 @@ public class AdminDmsUserController {
private static void removeDataSource() {
DynamicDataSourceContextHolder.clearDataSourceType();
}
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
}

23
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/AdminPmsTreatmentController.java

@ -67,20 +67,15 @@ public class AdminPmsTreatmentController {
treatmentService.adminExportTreatment(response, dto);
}
@ApiOperation("修改诊疗档案")
@PostMapping("/upd")
public JsonResponse<Integer> updateTreatment(@RequestBody @Validated PmsTreatmentDto.TreatmentUpdateDTO dto) {
DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(dto.getTenantId());
if (dmsTenant != null) {
UmsDataSource umsDataSource = umsDataSourceMapper.selectByPrimaryKey(dmsTenant.getDataSourceId());
if (umsDataSource != null) {
changeDataSource(umsDataSource.getDataSourceKey());
}
}
treatmentService.updateTreatment(dto);
return JsonResponse.ok();
}
// @ApiOperation("修改诊疗档案")
// @PostMapping("/upd")
// public JsonResponse<Integer> updateTreatment(@RequestBody @Validated PmsTreatmentDto.TreatmentUpdateDTO dto) {
// treatmentService.updateTreatment(dto);
// return JsonResponse.ok();
// }
//
<<<<<<< HEAD
private static void changeDataSource(String dataSourceKey) {
try {
DynamicDataSourceContextHolder.setDataSourceType(dataSourceKey);
@ -88,6 +83,8 @@ public class AdminPmsTreatmentController {
DynamicDataSourceContextHolder.clearDataSourceType();
}
}
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
// @ApiOperation("导出诊疗档案评估报告")
// @PostMapping("/exportTreatmentPg")

21
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java

@ -1,5 +1,6 @@
package com.acupuncture.web.controller.web;
import com.acupuncture.common.annotation.DataSource;
import com.acupuncture.common.annotation.Log;
import com.acupuncture.common.constant.Constants;
import com.acupuncture.common.core.domain.AjaxResult;
@ -8,6 +9,7 @@ import com.acupuncture.common.core.domain.entity.SysUser;
import com.acupuncture.common.core.domain.model.LoginBody;
import com.acupuncture.common.core.domain.model.LoginUser;
import com.acupuncture.common.enums.BusinessType;
import com.acupuncture.common.enums.DataSourceType;
import com.acupuncture.common.utils.SecurityUtils;
import com.acupuncture.framework.web.service.SysPermissionService;
import com.acupuncture.framework.web.service.TokenService;
@ -52,6 +54,7 @@ public class DmsLoginController {
* @param loginBody 登录信息
* @return 结果
*/
@DataSource(DataSourceType.MASTER)
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
@ -62,6 +65,24 @@ public class DmsLoginController {
return ajax;
}
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@DataSource(DataSourceType.MASTER)
@PostMapping("/loginSimple")
public AjaxResult loginSimple(@RequestBody LoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = webDmsLoginService.loginSimple(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 获取用户信息
*

5
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ExternalController.java

@ -80,13 +80,14 @@ public class ExternalController {
throw new BaseException("查询不到社区");
}
//切换数据源查询
changeDataSource(dataSourceList.get(0).getDataSourceKey());
DynamicDataSourceContextHolder.setDataSourceType(dataSourceList.get(0).getDataSourceKey());
}catch (Exception e) {
throw new BaseException("UUID错误:{}", from);
}
}
<<<<<<< HEAD
private static void changeDataSource(String key) {
try {
DynamicDataSourceContextHolder.setDataSourceType(key);
@ -95,6 +96,8 @@ public class ExternalController {
}
}
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
// @Anonymous
// @ApiOperation("上传数据")
// @PostMapping("/http/uploadMemberInfo")

3
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java

@ -4,8 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil;
import com.acupuncture.common.annotation.Anonymous;
import com.acupuncture.common.annotation.DataSource;
import com.acupuncture.common.core.domain.BaseDto;
import com.acupuncture.common.core.domain.JsonResponse;
import com.acupuncture.common.enums.DataSourceType;
import com.acupuncture.common.utils.SecurityUtils;
import com.acupuncture.framework.datasource.DynamicDataSourceContextHolder;
import com.acupuncture.system.domain.dto.FmsFollowupDto;
@ -56,6 +58,7 @@ public class FmsFollowupController {
@ApiOperation("查询公共队列")
@PostMapping("/commonQueue")
@Anonymous
@DataSource(DataSourceType.MASTER)
public JsonResponse<PageInfo<FmsFollowupVo.FollowupQueueVO>> queryCommonQueue(@RequestBody @Validated BaseDto<FmsFollowupDto.QueueQuery> dto) {
if (dto.getPageNum() > 0) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());

6
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ScreeningController.java

@ -82,12 +82,12 @@ public class ScreeningController {
@RequestMapping(value = "/createNoToken", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<QuestionnaireVo.DetailInfo> createNoToken(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.CreateDetail> params) throws Exception {
log.info("创建筛查详情{}", params);
// changeDataSource(params.getParam().getTenantId());
QuestionnaireVo.DetailInfo detailInfo = screeningService.createDetail(params.getParam(), params.getParam().getUserId(), params.getParam().getTenantId());
log.info("创建筛查详情结束");
return JsonResponse.ok(detailInfo);
}
<<<<<<< HEAD
private void changeDataSource(Long tenantId) {
DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(tenantId);
if (dmsTenant != null) {
@ -101,6 +101,8 @@ public class ScreeningController {
}
}
}
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
@ApiOperation(value = "提交筛查", notes = "")
@RequestMapping(value = "/submit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
@ -115,7 +117,6 @@ public class ScreeningController {
@RequestMapping(value = "/submitNoToken", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse submitNoToken(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.SubmitScreeningQuestionnaire> params) throws Exception {
log.info("提交筛查开始{}", params);
// changeDataSource(params.getParam().getTenantId());
screeningService.submitQuestionnaire(params.getParam(), 0L);
return JsonResponse.ok();
}
@ -125,7 +126,6 @@ public class ScreeningController {
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse saveQuestionnaire(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.SaveQuestionnaire> params) throws Exception {
log.info("保存调查筛查开始{}", params);
// changeDataSource(params.getParam().getTenantId());
screeningService.saveQuestionnaire(params.getParam(), params.getParam().getUserId());
log.info("保存调查筛查结束");
return JsonResponse.ok();

368
acupuncture-admin/src/main/java/com/acupuncture/web/task/TaskController.java

@ -1,3 +1,4 @@
<<<<<<< HEAD
//package com.acupuncture.web.controller.web;
//
//import cn.hutool.core.bean.BeanUtil;
@ -341,3 +342,370 @@
// private Integer index;
// }
//}
=======
package com.acupuncture.web.task;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.acupuncture.common.annotation.Anonymous;
import com.acupuncture.common.core.redis.RedisCache;
import com.acupuncture.framework.datasource.DynamicDataSourceContextHolder;
import com.acupuncture.system.domain.dto.FmsFollowupDto;
import com.acupuncture.system.domain.po.FmsFollowupTask;
import com.acupuncture.system.domain.po.FmsFollowupTaskExample;
import com.acupuncture.system.domain.po.FmsPatientQueueRelation;
import com.acupuncture.system.domain.vo.FmsFollowupVo;
import com.acupuncture.system.domain.vo.UmsDataSourceVo;
import com.acupuncture.system.persist.dao.FmsFollowupDao;
import com.acupuncture.system.persist.dao.UmsDataSourceDao;
import com.acupuncture.system.persist.mapper.FmsFollowupTaskMapper;
import com.acupuncture.system.persist.mapper.FmsPatientQueueRelationMapper;
import com.acupuncture.system.service.FmsFollowupQueueService;
import com.acupuncture.system.service.FmsFollowupService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.quartz.TriggerUtils;
import org.quartz.impl.triggers.CronTriggerImpl;
import org.quartz.spi.OperableTrigger;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author zzc
* @Package com.acupuncture.web.controller.web
* @Date 2025/2/13 8:50
* @description:
*/
@Slf4j
@Api(tags = "定时任务相关")
@RestController
@RequestMapping("/task")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class TaskController {
@Resource
private FmsFollowupDao fmsFollowupDao;
@Resource
private FmsFollowupService fmsFollowupService;
@Resource
private FmsFollowupTaskMapper fmsFollowupTaskMapper;
@Resource
private UmsDataSourceDao umsDataSourceDao;
@Resource
private FmsPatientQueueRelationMapper fmsPatientQueueRelationMapper;
@Resource
private RedisCache redisCache;
@Resource
private FmsFollowupQueueService fmsFollowupQueueService;
/**
* 处理业务
*
* @param tenandId 租户用户
* @param commonQueue 公共队列
*/
public void doTask(Long tenandId, List<FmsFollowupVo.FollowupQueueVO> commonQueue) {
//查询从库队列
//1. 查询队列
List<FmsFollowupVo.FollowupQueueVO> slavelQueueList = fmsFollowupDao.selectQueueList(null, null, null, null);
//合并公共队列和从库的队列
slavelQueueList.addAll(commonQueue);
//查询每个队列的对象
for (FmsFollowupVo.FollowupQueueVO queue : slavelQueueList) {
FmsFollowupDto.FollowupPatientQueryDTO followupPatientQueryDTO = new FmsFollowupDto.FollowupPatientQueryDTO();
followupPatientQueryDTO.setQueueId(queue.getId());
followupPatientQueryDTO.setTenantId(queue.getTenantId());
List<FmsFollowupVo.FollowupPatient> patientList = fmsFollowupService.queryPatient(followupPatientQueryDTO);
log.info("查询每个队列的对象:{}", patientList);
}
//定时任务
// //循环租户
// for (UmsDataSourceVo.Result tenant : tenantList) {
// if ("MASTER".equals(tenant.getDataSourceKey())) {
// continue;
// }
// changeDataSource(tenant);
// {
// //获取随访患者列表,根据患者出院日时间和队列添加工单
// //1. 查询队列
// List<FmsFollowupVo.FollowupQueueVO> queueList = fmsFollowupDao.selectQueueList(null, null, null, null);
//
// if (CollectionUtil.isEmpty(queueList)) {
// queueList = followupQueueVOS;
// } else {
// if (CollectionUtil.isEmpty(followupQueueVOS)) {
// queueList.addAll(followupQueueVOS);
// }
// }
// for (FmsFollowupVo.FollowupQueueVO followupQueueVO : queueList) {
// Integer followWindowAdys = followupQueueVO.getFollowWindowAdys();
//
// //2. 查询队列随访患者列表
//// changeDataSource(result);
// FmsFollowupDto.FollowupPatientQueryDTO followupPatientQueryDTO = new FmsFollowupDto.FollowupPatientQueryDTO();
// followupPatientQueryDTO.setQueueId(followupQueueVO.getId());
// followupPatientQueryDTO.setTenantId(followupQueueVO.getTenantId());
// changeDataSource(result);
//
// List<FmsFollowupVo.FollowupPatient> patientList = fmsFollowupService.queryPatient(followupPatientQueryDTO);
//// List<FmsFollowupVo.FollowupPatient> patientList = fmsFollowupDao.queryPatient(followupQueueVO.getId(), null, null);
// if (CollectionUtil.isEmpty(patientList)) {
// continue;
// }
// //随访总月数
// Integer followupMonth = followupQueueVO.getFollowupMonth();
// for (FmsFollowupVo.FollowupPatient followupPatient : patientList) {
// //获取随访到期时间 出院时间+随访总月数 = 到期时间
// Calendar calendar = Calendar.getInstance();
// calendar.setTime(followupPatient.getDischargeTime());
// calendar.set(Calendar.MONTH, followupMonth);
// Date time = calendar.getTime();
//
// //获取队列信息
// String frequency = followupQueueVO.getFrequency();
// List<Date> dateList = new ArrayList<>();
// try {
// CronTriggerImpl cronTrigger = new CronTriggerImpl();
// cronTrigger.setCronExpression(frequency);
// //TriggerUtils.computeFireTimesBetween(要计算触发时间的触发器对象, 用于计算触发时间的日历对象, 计算触发时间的起始时间点, 计算触发时间的结束时间点);
// dateList = TriggerUtils.computeFireTimesBetween(cronTrigger, null, followupPatient.getDischargeTime(), time);
// if (CollectionUtil.isEmpty(dateList)) {
// continue;
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// //3. 判断随访类型
// if (followupQueueVO.getFollowupType() == 0) {
// //单次
//
// //判断是否已有该次随访
// FmsFollowupTaskExample fmsFollowupTaskExample = new FmsFollowupTaskExample();
// fmsFollowupTaskExample.createCriteria().andTimesEqualTo(1).andPatientIdEqualTo(followupPatient.getPatientId()).andQueueIdEqualTo(followupQueueVO.getId());
// List<FmsFollowupTask> fmsFollowupTasks = fmsFollowupTaskMapper.selectByExample(fmsFollowupTaskExample);
// if (CollectionUtil.isNotEmpty(fmsFollowupTasks)) {
// continue;
// }
// FmsFollowupTask fmsFollowupTask = new FmsFollowupTask();
// BeanUtil.copyProperties(followupQueueVO, fmsFollowupTask);
// fmsFollowupTask.setId(IdUtil.getSnowflakeNextId());
// fmsFollowupTask.setName(followupPatient.getName());
// fmsFollowupTask.setPinyinFull(followupPatient.getPinyinFull());
// fmsFollowupTask.setPinyinSimple(followupPatient.getPinyinSimple());
// fmsFollowupTask.setGender(followupPatient.getGender());
// if (followupPatient.getBirthDate() != null) {
// fmsFollowupTask.setAge(DateUtil.age(followupPatient.getBirthDate(), new Date()));
// }
// fmsFollowupTask.setEthnicity(followupPatient.getEthnicity());
// fmsFollowupTask.setEducationYears(followupPatient.getEducationYears());
// fmsFollowupTask.setPhone(followupPatient.getPhone());
// fmsFollowupTask.setTenantId(followupPatient.getTenantId());
// fmsFollowupTask.setIdCardType(followupPatient.getIdCardType());
// fmsFollowupTask.setIdCard(followupPatient.getIdCard());
// fmsFollowupTask.setTimes(1);
// fmsFollowupTask.setQueueId(followupQueueVO.getId());
// fmsFollowupTask.setPatientId(followupPatient.getId());
// fmsFollowupTask.setEducationYears(followupPatient.getEducationYears());
// fmsFollowupTask.setDelFlag((byte) 0);
// fmsFollowupTask.setCreateTime(new Date());
// fmsFollowupTask.setStatus((byte) 0);
//
// //计算第一次随访的时间
// DateComparator dateComparator = getDate(dateList);
// if (dateComparator.getDate() != null) {
// fmsFollowupTask.setStartTime(dateComparator.getDate());
// } else {
// Calendar instance = Calendar.getInstance();
// instance.setTime(dateList.get(0));
// instance.add(Calendar.DATE, -followWindowAdys / 2);
// fmsFollowupTask.setStartTime(instance.getTime());
// }
// Calendar instance1 = Calendar.getInstance();
// instance1.setTime(dateList.get(0));
// instance1.add(Calendar.DATE, followWindowAdys / 2);
// fmsFollowupTask.setEndTime(instance1.getTime());
// fmsFollowupTask.setFollowuper(followupQueueVO.getPersonInCharge());
// fmsFollowupTask.setFollowupTime(dateList.get(0));
// changeDataSource(result);
// fmsFollowupTaskMapper.insertSelective(fmsFollowupTask);
//
// } else {
// //周期
// //4. 根据频次和总月数添加
// DateComparator dateComparator = getDate(dateList);
// if (dateComparator.getDate() == null || dateComparator.getIndex() == null) {
// continue;
// }
// Date date = dateComparator.getDate();
// Integer index = dateComparator.getIndex();
//
// //判断是否已有该次随访
// FmsFollowupTaskExample fmsFollowupTaskExample = new FmsFollowupTaskExample();
// fmsFollowupTaskExample.createCriteria().andTimesEqualTo(index).andPatientIdEqualTo(followupPatient.getPatientId()).andQueueIdEqualTo(followupQueueVO.getId());
// List<FmsFollowupTask> fmsFollowupTasks = fmsFollowupTaskMapper.selectByExample(fmsFollowupTaskExample);
// if (CollectionUtil.isNotEmpty(fmsFollowupTasks)) {
// continue;
// }
//
// FmsFollowupTask fmsFollowupTask = new FmsFollowupTask();
// BeanUtil.copyProperties(followupQueueVO, fmsFollowupTask);
// fmsFollowupTask.setId(IdUtil.getSnowflakeNextId());
// fmsFollowupTask.setName(followupPatient.getName());
// fmsFollowupTask.setPinyinFull(followupPatient.getPinyinFull());
// fmsFollowupTask.setPinyinSimple(followupPatient.getPinyinSimple());
// fmsFollowupTask.setGender(followupPatient.getGender());
// if (followupPatient.getBirthDate() != null) {
// fmsFollowupTask.setAge(DateUtil.age(followupPatient.getBirthDate(), new Date()));
// }
// fmsFollowupTask.setEthnicity(followupPatient.getEthnicity());
// fmsFollowupTask.setEducationYears(followupPatient.getEducationYears());
// fmsFollowupTask.setTimes(index);
// fmsFollowupTask.setPhone(followupPatient.getPhone());
// fmsFollowupTask.setTenantId(followupPatient.getTenantId());
// fmsFollowupTask.setIdCardType(followupPatient.getIdCardType());
// fmsFollowupTask.setIdCard(followupPatient.getIdCard());
// fmsFollowupTask.setId(IdUtil.getSnowflakeNextId());
// fmsFollowupTask.setQueueId(followupQueueVO.getId());
// fmsFollowupTask.setDelFlag((byte) 0);
// fmsFollowupTask.setCreateTime(new Date());
// fmsFollowupTask.setEducationYears(followupPatient.getEducationYears());
// fmsFollowupTask.setStatus((byte) 0);
//
// fmsFollowupTask.setStartTime(date);
// Calendar instance = Calendar.getInstance();
// instance.setTime(date);
// instance.add(Calendar.DATE, followWindowAdys / 2);
//
// fmsFollowupTask.setEndTime(instance.getTime());
// changeDataSource(result);
// fmsFollowupTask.setPatientId(followupPatient.getId());
// fmsFollowupTaskMapper.insertSelective(fmsFollowupTask);
// }
// }
// }
//
// }
// }
}
@ApiOperation("定时任务添加随访工单")
@PostMapping("/task")
@Scheduled(cron = "0 0 0 * * ?")
@Anonymous
public void task() {
// TODO 生成工单第一次生成之后2周的,往后只生成之后一周。第一次随访时间: ( 患者的出院时间 - 7 + 轮次时间) 到 (患者的出院时间 + 7 + 轮次时间 )
//查询租户,根据租户循环切换数据源,定时处理所有医院的随访工单
List<UmsDataSourceVo.Result> tenantList = umsDataSourceDao.query(null);
if (CollectionUtil.isEmpty(tenantList)) {
return;
}
//过滤掉没有数据源的租户
tenantList = tenantList.stream().filter(result -> StrUtil.isNotEmpty(result.getDataSourceKey())).collect(Collectors.toList());
//查询公共队列
List<FmsFollowupVo.FollowupQueueVO> followupQueueVOS = fmsFollowupQueueService.queryCommonQueue(null);
//循环租户
for (UmsDataSourceVo.Result tenant : tenantList) {
//切换数据源
DynamicDataSourceContextHolder.setDataSourceType(tenant.getDataSourceKey());
//处理从库业务
doTask(tenant.getTenantId(), followupQueueVOS);
//销毁数据源
DynamicDataSourceContextHolder.clearDataSourceType();
}
}
private static void changeDataSource(UmsDataSourceVo.Result result) {
DynamicDataSourceContextHolder.setDataSourceType(result.getDataSourceKey());
}
/**
* 法用于计算在指定时间范围内触发器的触发时间点具体步骤如下
* 初始化一个空列表 lst 存储触发时间点
* 克隆传入的触发器 trigg并检查其下一个触发时间是否为空如果为空则设置开始时间和结束时间并计算首次触发时间
* 使用 while 循环遍历触发器的触发时间点直到没有更多触发时间或超出指定范围
* 如果触发时间在指定范围内则将其添加到列表中并更新触发器状态
*
* @param trigg cron表达式
* @param from 患者出院时间
* @param to 患者出院时间 + 随访总月数
* @return
*/
public static List<Date> computeFireTimesBetween(OperableTrigger trigg, org.quartz.Calendar cal, Date from, Date to) {
LinkedList<Date> lst = new LinkedList();
OperableTrigger t = (OperableTrigger) trigg.clone();
if (t.getNextFireTime() == null) {
t.setStartTime(from);
t.setEndTime(to);
t.computeFirstFireTime(cal);
}
while (true) {
Date d = t.getNextFireTime();
if (d == null) {
break;
}
if (d.before(from)) {
t.triggered(cal);
} else {
if (d.after(to)) {
break;
}
lst.add(d);
t.triggered(cal);
}
}
return Collections.unmodifiableList(lst);
}
/**
* 返回当前时间之后的第一个date及对应顺序
*
* @param dateList key 为顺序value 为时间
* @return
*/
public static DateComparator getDate(List<Date> dateList) {
Date today = new Date();
DateComparator dateComparator = new DateComparator();
for (int i = 0; i < dateList.size(); i++) {
Date date = dateList.get(i);
if (date.after(today)) {
dateComparator.setDate(date);
dateComparator.setIndex(i + 1);
return dateComparator;
}
}
return dateComparator;
}
@Data
public static class DateComparator {
private Date date;
private Integer index;
}
}
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666

3
acupuncture-common/src/main/java/com/acupuncture/common/core/domain/entity/SysUser.java

@ -100,7 +100,10 @@ public class SysUser extends BaseEntity
@ApiModelProperty("是否具有审核权限(0不具有; 1具有)")
private Byte slaverAdmin;
<<<<<<< HEAD
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
public SysUser()
{

9
acupuncture-framework/src/main/java/com/acupuncture/framework/aspectj/AdminGlobalDataSourceAspect.java

@ -70,6 +70,7 @@ public class AdminGlobalDataSourceAspect {
*/
public String getDataSource(ProceedingJoinPoint point) {
// 获取请求携带的令牌
<<<<<<< HEAD
ServletRequestAttributes requestAttributes = (ServletRequestAttributes)
RequestContextHolder.getRequestAttributes();
HttpServletRequest request;
@ -79,12 +80,15 @@ public class AdminGlobalDataSourceAspect {
}
request = requestAttributes.getRequest();
//token为空
=======
HttpServletRequest request = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
Long tenantId;
String header = request.getHeader(UserConstants.DEPT);
if(StrUtil.isNotEmpty(header)){
tenantId = Long.parseLong(header);
}else {
// String deptId = request.getHeader(WebConstant.HEADER_KEY_DEPT_ID);
String authHeader = request.getHeader(UserConstants.HEADER_KEY_TOKEN);
if (StrUtil.isEmpty(authHeader)) {
return null;
@ -94,12 +98,15 @@ public class AdminGlobalDataSourceAspect {
return null;
}
}
<<<<<<< HEAD
//设置所属医院和数据源l
// LoginUser loginUser = SecurityUtils.getLoginUser();
// if(ObjectUtil.isNull(loginUser) || loginUser.getUser().isAdmin()){
// return null;
// }
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
//根据组织ID查询数据源
UmsDataSource dataSource = dmsLoginService.getDataSourceByTenantId(tenantId);
if (dataSource == null) {

2
acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java

@ -114,7 +114,7 @@ public class SecurityConfig
.authorizeHttpRequests((requests) -> {
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
requests.antMatchers("/login", "/register", "/captchaImage", "/web/login", "/web/queryTenantById", "/api/http/getUserInfo", "/api/http/addReportImage", "/api/http/uploadMemberInfo", "/task/task").permitAll()
requests.antMatchers("/login", "/register", "/captchaImage", "/web/login", "/web/queryTenantById", "/api/http/getUserInfo", "/api/http/addReportImage", "/api/http/uploadMemberInfo", "/task/task", "/loginSimple").permitAll()
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", "/static/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

48
acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/SysLoginService.java

@ -100,6 +100,54 @@ public class SysLoginService
return tokenService.createToken(loginUser);
}
/**
* 登录验证
*
* @param username 用户名
* @param password 密码
* @param code 验证码
* @param uuid 唯一标识
* @return 结果
*/
public String loginSimple(String username, String password, String code, String uuid)
{
// 验证码校验
// validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证
Authentication authentication = null;
try
{
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
}
catch (Exception e)
{
if (e instanceof BadCredentialsException)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
else
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally
{
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
// 生成token
return tokenService.createToken(loginUser);
}
/**
* 登录验证
*

50
acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/WebDmsLoginService.java

@ -62,7 +62,55 @@ public class WebDmsLoginService
public String login(String username, String password, String code, String uuid)
{
// 验证码校验
// validateCaptcha(username, code, uuid);
validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证
Authentication authentication = null;
try
{
DmsUserAuthenticationToken authenticationToken = new DmsUserAuthenticationToken(username, password);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
}
catch (Exception e)
{
if (e instanceof BadCredentialsException)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
else
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally
{
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
// 生成token
return tokenService.createToken(loginUser);
}
/**
* 登录验证
*
* @param username 用户名
* @param password 密码
* @param code 验证码
* @param uuid 唯一标识
* @return 结果
*/
public String loginSimple(String username, String password, String code, String uuid)
{
// 验证码校验
validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证

7
acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/AdminTenantUserDto.java

@ -37,6 +37,10 @@ public class AdminTenantUserDto {
private String status;
private String contactPhone;
<<<<<<< HEAD
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
@ApiModelProperty("是否具有审核权限(0不具有; 1具有)")
private Byte slaverAdmin;
//
@ -64,7 +68,10 @@ public class AdminTenantUserDto {
private String status;
private String contactPhone;
<<<<<<< HEAD
=======
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
@ApiModelProperty("是否具有审核权限(0不具有; 1具有)")
private Byte slaverAdmin;
}

2
acupuncture-system/src/main/java/com/acupuncture/system/mapper/SysRoleMapper.java

@ -27,7 +27,7 @@ public interface SysRoleMapper
* @param userId 用户ID
* @return 角色列表
*/
@DataSource(DataSourceType.MASTER)
// @DataSource(DataSourceType.MASTER)
public List<SysRole> selectRolePermissionByUserId(Long userId);
/**

1
acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java

@ -19,7 +19,6 @@ public interface FmsFollowupQueueService {
* 查询公共队列
* @return
*/
@DataSource(DataSourceType.MASTER)
List<FmsFollowupVo.FollowupQueueVO> queryCommonQueue(String name);
}

21
acupuncture-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -25,6 +25,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="slaverAdmin" column="slaver_admin" />
<<<<<<< HEAD
=======
<result property="tenantName" column="tenant_name" />
<result property="tenantPhone" column="tenant_phone" />
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
<association property="dept" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap>
@ -49,7 +54,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectUserVo">
<<<<<<< HEAD
select u.user_id, u.tenant_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.slaver_admin,
=======
select u.user_id, u.tenant_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.slaver_admin, u.tenant_name, u.tenant_phone,
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
@ -168,7 +177,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
<<<<<<< HEAD
<if test="slaverAdmin != null ">slaver_admin,</if>
=======
<if test="slaverAdmin != null">slaver_admin,</if>
<if test="tenantName != null and tenantName != ''">tenant_name,</if>
<if test="tenantPhone != null and tenantPhone != ''">tenant_phone,</if>
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
create_time
)values(
<if test="userId != null and userId != ''">#{userId},</if>
@ -184,7 +199,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<<<<<<< HEAD
<if test="slaverAdmin != null ">#{slaverAdmin},</if>
=======
<if test="slaverAdmin != null">#{slaverAdmin},</if>
<if test="tenantName != null and tenantName != ''">#{tenantName},</if>
<if test="tenantPhone != null and tenantPhone != ''">#{tenantPhone},</if>
>>>>>>> 93181b5fbb436385d1d312300e8dcc61b43d1666
sysdate()
)
</insert>

Loading…
Cancel
Save