| | |
| | | import com.ruoyi.task.domain.ServiceSubtaskPreachform; |
| | | import com.ruoyi.task.service.IServiceTaskService; |
| | | import com.ruoyi.task.mapper.ServiceSubtaskPreachformMapper; |
| | | import com.ruoyi.task.event.FollowupCompletedEventPublisher; |
| | | import com.ruoyi.patarchive.mapper.PatArchiveMapper; |
| | | /** |
| | | * 任务问卷问题选项Service业务层处理 |
| | |
| | | |
| | | @Autowired |
| | | private ServiceSubtaskMapper serviceSubtaskMapper; |
| | | |
| | | @Autowired |
| | | private FollowupCompletedEventPublisher followupCompletedEventPublisher; |
| | | |
| | | @Autowired |
| | | private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper; |
| | |
| | | log.error("将该key和value从redis中,serviceSubtask的值为--------:{}", serviceSubtask); |
| | | serviceSubtask.setScore(formatScore(scoreTotal)); |
| | | serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask); |
| | | followupCompletedEventPublisher.publish(serviceSubtask.getId()); |
| | | |
| | | //将当前发送状态改成 9 完成(缓存 preachform 查询) |
| | | String currentPreachform = serviceSubtask.getCurrentPreachform(); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 同一份问卷的保存锁:按「任务+患者+子任务」加锁, |
| | | * 前端重复点击 / 并发请求进来时串行执行,避免同一份问卷被写两遍。 |
| | | * 注意:只是串行化,不阻止再次保存——问卷仍然允许修改后再保存(走更新逻辑)。 |
| | | */ |
| | | private static final java.util.concurrent.ConcurrentHashMap<String, Object> SAVE_LOCKS = |
| | | new java.util.concurrent.ConcurrentHashMap<>(); |
| | | |
| | | @Override |
| | | public Integer saveQuestionDetail(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) { |
| | | String lockKey = serviceSubTaskCacheReq.getParam1() + "_" |
| | | + serviceSubTaskCacheReq.getParam2() + "_" |
| | | + serviceSubTaskCacheReq.getParam6(); |
| | | Object lock = SAVE_LOCKS.computeIfAbsent(lockKey, k -> new Object()); |
| | | if (SAVE_LOCKS.size() > 20000) { |
| | | SAVE_LOCKS.clear(); |
| | | } |
| | | synchronized (lock) { |
| | | return doSaveQuestionDetail(serviceSubTaskCacheReq, flag); |
| | | } |
| | | } |
| | | |
| | | private Integer doSaveQuestionDetail(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) { |
| | | Long tid = Long.valueOf(serviceSubTaskCacheReq.getParam1()); |
| | | Long pid = Long.valueOf(serviceSubTaskCacheReq.getParam2()); |
| | | Long subid = Long.valueOf(serviceSubTaskCacheReq.getParam6()); |
| | |
| | | serviceSubtask.setUpdateTime(new Date()); |
| | | serviceSubtask.setScore(formatScore(scoreTotal)); |
| | | serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask); |
| | | followupCompletedEventPublisher.publish(serviceSubtask.getId()); |
| | | |
| | | //将当前发送状态改成9完成 |
| | | ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); |
| | |
| | | serviceSubtask.setVisitTime(new Date()); |
| | | serviceSubtask.setScore(formatScore(scoreTotal)); |
| | | serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); |
| | | followupCompletedEventPublisher.publish(serviceSubtask.getId()); |
| | | //将当前发送状态改成9完成 |
| | | ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); |
| | | serviceSubtaskPreachform.setPreachform(serviceSubtask.getCurrentPreachform()); |