web : 修改-问题库管理相关接口

dev_2.1.0
xueqingkun 1 year ago
parent da5c145110
commit c2376861bd

@ -10,10 +10,15 @@ import org.springframework.data.redis.core.ValueOperations;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.function.Supplier;
@Slf4j @Slf4j
public class RedisSequenceUtil { public class RedisSequenceUtil {
/**
* redisTemplate:使redisTemplategetRedisTemplate()
*/
private volatile static RedisTemplate<String, String> redisTemplate = null; private volatile static RedisTemplate<String, String> redisTemplate = null;
@ -40,6 +45,46 @@ public class RedisSequenceUtil {
return nowDay + String.format("%03d", getIncrement("complex_disease_no_seq_"+nowDay)); return nowDay + String.format("%03d", getIncrement("complex_disease_no_seq_"+nowDay));
} }
/**
* Q0000001
* @param supplier
* @return Q0000001
*/
public static String getQuestionLibraryCode(Supplier<Long> supplier){
RedisTemplate<String,String> redisTemplate = getRedisTemplate();
if (Objects.nonNull(supplier) &&
Boolean.FALSE.equals(redisTemplate.hasKey("question_library_code_seq"))){
Long code = supplier.get();
if (Objects.nonNull(code)){
redisTemplate.opsForValue().set("question_library_code_seq",code.toString());
}
}
Long increment = getIncrement("question_library_code_seq");
return "Q" + String.format("%07d", increment);
}
/**
* A0000029
* @param supplier
* @return A0000029
*/
public static String getQuestionLibraryDefaultAnswerCode(Supplier<Long> supplier){
RedisTemplate<String,String> redisTemplate = getRedisTemplate();
if (Objects.nonNull(supplier) &&
Boolean.FALSE.equals(redisTemplate.hasKey("question_library_default_answer_code_seq"))){
Long code = supplier.get();
if (Objects.nonNull(code)){
redisTemplate.opsForValue().set("question_library_default_answer_code_seq",code.toString());
}
}
Long increment = getIncrement("question_library_default_answer_code_seq");
return "A" + String.format("%07d", increment);
}
/** /**
* 1 * 1
* @param key redis key * @param key redis key
@ -54,7 +99,7 @@ public class RedisSequenceUtil {
* redisTemplate * redisTemplate
* @return redisTemplate * @return redisTemplate
*/ */
public static RedisTemplate<String, String> getRedisTemplate() { public static RedisTemplate getRedisTemplate() {
if (redisTemplate == null) { if (redisTemplate == null) {
synchronized (RedisSequenceUtil.class){ synchronized (RedisSequenceUtil.class){
if (null == redisTemplate){ if (null == redisTemplate){

@ -9,7 +9,6 @@ import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo; import com.supervision.vo.manage.AskQuestionLibraryResVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -17,7 +16,7 @@ import java.util.List;
@Api(tags = "问题库管理") @Api(tags = "问题库管理")
@RestController @RestController
@RequestMapping("aqLibrary") @RequestMapping("/aqLibrary")
@RequiredArgsConstructor @RequiredArgsConstructor
public class AskQuestionLibraryManageController { public class AskQuestionLibraryManageController {
@ -51,7 +50,7 @@ public class AskQuestionLibraryManageController {
@ApiOperation("更新问题库信息") @ApiOperation("更新问题库信息")
@PostMapping("/updateQuestionLibrary") @PutMapping("/updateQuestionLibrary")
public boolean updateQuestionLibrary(@RequestBody AskTemplateQuestionLibrary askTemplateQuestionLibrary) { public boolean updateQuestionLibrary(@RequestBody AskTemplateQuestionLibrary askTemplateQuestionLibrary) {
return askQuestionLibraryManageService.updateQuestionLibrary(askTemplateQuestionLibrary); return askQuestionLibraryManageService.updateQuestionLibrary(askTemplateQuestionLibrary);

@ -1,12 +1,14 @@
package com.supervision.manage.service.impl; package com.supervision.manage.service.impl;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.manage.service.AskQuestionLibraryManageService; import com.supervision.manage.service.AskQuestionLibraryManageService;
import com.supervision.model.AskTemplateQuestionLibrary; import com.supervision.model.AskTemplateQuestionLibrary;
import com.supervision.model.CommonDic; import com.supervision.model.CommonDic;
import com.supervision.service.AskTemplateQuestionLibraryService; import com.supervision.service.AskTemplateQuestionLibraryService;
import com.supervision.service.CommonDicService; import com.supervision.service.CommonDicService;
import com.supervision.util.RedisSequenceUtil;
import com.supervision.vo.manage.AskQuestionLibraryReqVo; import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo; import com.supervision.vo.manage.AskQuestionLibraryResVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -44,6 +46,24 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
public String saveQuestionLibrary(AskTemplateQuestionLibrary askTemplateQuestionLibrary) { public String saveQuestionLibrary(AskTemplateQuestionLibrary askTemplateQuestionLibrary) {
assertSave(askTemplateQuestionLibrary); assertSave(askTemplateQuestionLibrary);
String nextCode = RedisSequenceUtil.getQuestionLibraryCode(() -> {
String maxCode = askTemplateQuestionLibraryService.getMaxCode();
if (StrUtil.isNotEmpty(maxCode)) {
return Long.parseLong(StrUtil.removePrefix(maxCode, "Q"));
}
return null;
});
String nextDefaultCode = RedisSequenceUtil.getQuestionLibraryDefaultAnswerCode(() -> {
String code = askTemplateQuestionLibraryService.getMaxDefaultAnswerCode();
if (StrUtil.isNotEmpty(code)) {
return Long.parseLong(StrUtil.removePrefix(code, "A"));
}
return null;
});
askTemplateQuestionLibrary.setCode(nextCode);
askTemplateQuestionLibrary.setDefaultAnswerCode(nextDefaultCode);
askTemplateQuestionLibraryService.save(askTemplateQuestionLibrary); askTemplateQuestionLibraryService.save(askTemplateQuestionLibrary);
return askTemplateQuestionLibrary.getId(); return askTemplateQuestionLibrary.getId();
} }
@ -64,8 +84,8 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
} }
private void assertSave(AskTemplateQuestionLibrary askTemplateQuestionLibrary){ private void assertSave(AskTemplateQuestionLibrary askTemplateQuestionLibrary){
Assert.notEmpty(askTemplateQuestionLibrary.getCode(),"编码不能为空"); Assert.notNull(askTemplateQuestionLibrary.getDictId(),"问题类目不能为空");
Assert.notEmpty(askTemplateQuestionLibrary.getQuestion(),"问题不能为空"); Assert.notEmpty(askTemplateQuestionLibrary.getDescription(),"问题不能为空");
Assert.notEmpty(askTemplateQuestionLibrary.getDefaultAnswer(),"默认回答不能为空"); Assert.notEmpty(askTemplateQuestionLibrary.getDefaultAnswer(),"默认回答不能为空");
} }
} }

@ -19,4 +19,8 @@ public interface AskTemplateQuestionLibraryService extends IService<AskTemplateQ
Page<AskQuestionLibraryResVo> queryPageList(Integer pageNum, Integer pageSize, AskQuestionLibraryReqVo askQuestionLibraryReqVo); Page<AskQuestionLibraryResVo> queryPageList(Integer pageNum, Integer pageSize, AskQuestionLibraryReqVo askQuestionLibraryReqVo);
String getMaxCode();
String getMaxDefaultAnswerCode();
} }

@ -1,5 +1,6 @@
package com.supervision.service.impl; package com.supervision.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.AskTemplateQuestionLibrary; import com.supervision.model.AskTemplateQuestionLibrary;
@ -10,6 +11,7 @@ import com.supervision.vo.manage.AskQuestionLibraryResVo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @author flevance * @author flevance
@ -32,6 +34,26 @@ public class AskTemplateQuestionLibraryServiceImpl extends ServiceImpl<AskTempla
return super.getBaseMapper().queryPageList(new Page<>(pageNum,pageSize),askQuestionLibraryReqVo); return super.getBaseMapper().queryPageList(new Page<>(pageNum,pageSize),askQuestionLibraryReqVo);
} }
@Override
public String getMaxCode() {
AskTemplateQuestionLibrary askTemplateQuestionLibrary = super.getBaseMapper()
.selectOne(new QueryWrapper<AskTemplateQuestionLibrary>().select("max(code) as code"));
if (Objects.isNull(askTemplateQuestionLibrary)){
return null;
}
return askTemplateQuestionLibrary.getCode();
}
@Override
public String getMaxDefaultAnswerCode() {
AskTemplateQuestionLibrary askTemplateQuestionLibrary = super.getBaseMapper()
.selectOne(new QueryWrapper<AskTemplateQuestionLibrary>()
.select("max(default_answer_code) as default_answer_code"));
if (Objects.isNull(askTemplateQuestionLibrary)){
return null;
}
return askTemplateQuestionLibrary.getDefaultAnswerCode();
}
} }

@ -12,7 +12,15 @@ public class AskQuestionLibraryReqVo {
@ApiModelProperty("疾病id") @ApiModelProperty("疾病id")
private String diseaseId; private String diseaseId;
@ApiModelProperty("问题") /**
*Deprecated @since 2.1.0 questiondescription
* rasa使
*/
@Deprecated
@ApiModelProperty(name = "问题",hidden = true)
private String question; private String question;
@ApiModelProperty("问题")
private String description;
} }

@ -20,9 +20,12 @@ public class AskQuestionLibraryResVo {
@ApiModelProperty("问题类目id") @ApiModelProperty("问题类目id")
private String dictId; private String dictId;
@ApiModelProperty("问题") @ApiModelProperty("由用户传入的问题生成的问题列表")
private List<String> question; private List<String> question;
@ApiModelProperty("用户设置的问题")
private String description;
@ApiModelProperty("默认回答") @ApiModelProperty("默认回答")
private String defaultAnswer; private String defaultAnswer;

@ -38,6 +38,7 @@
<result property="nameZhPath" column="nameZhPath" /> <result property="nameZhPath" column="nameZhPath" />
</resultMap> </resultMap>
<sql id="queryListsql"> <sql id="queryListsql">
select select
atql.id as id, atql.id as id,
@ -45,18 +46,22 @@
atql.id as libraryQuestionId, atql.id as libraryQuestionId,
cd.code as code, cd.code as code,
atql.dict_id as dictId, atql.dict_id as dictId,
atql.description as description,
atql.question as question, atql.question as question,
cd.name_zh_path as nameZhPath, cd.name_zh_path as nameZhPath,
cd.name_zh as nameZh cd.name_zh as nameZh
from vp_ask_template_question_library atql from vp_ask_template_question_library atql
left join vp_common_dic cd on atql.dict_id = cd.id left join vp_common_dic cd on atql.dict_id = cd.id
<where> <where>
<!--排除掉默认系统异常问题数据-->
atql.id != '1739875168974536705'
<if test="askQuestionLibrary.code != null and askQuestionLibrary.code != '' "> <if test="askQuestionLibrary.code != null and askQuestionLibrary.code != '' ">
cd.code = #{askQuestionLibrary.code} and cd.code = #{askQuestionLibrary.code}
</if> </if>
<if test="askQuestionLibrary.question != null and askQuestionLibrary.question != '' "> <if test="askQuestionLibrary.description != null and askQuestionLibrary.description != '' ">
JSON_EXTRACT(question, '$[*]') like CONCAT('%', #{askQuestionLibrary.question}, '%') and atql.question like CONCAT('%', #{askQuestionLibrary.description}, '%')
</if> </if>
</where> </where>
order by atql.create_time desc order by atql.create_time desc
</sql> </sql>

Loading…
Cancel
Save