代码提交

main
liu 10 months ago
parent 82e1578c1e
commit f578a3ebe5

@ -1,6 +1,7 @@
package com.supervision.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.supervision.dto.roundAsk.SessionParamDTO;
@ -13,10 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import static com.supervision.service.impl.AskServiceImpl.SESSION_PARAM;
@ -65,15 +63,15 @@ public class AskController {
}
@ApiOperation("多轮对话中用户手动填写参数")
@ApiOperation("多轮对话中用户手动填写参数,返回唯一的角色设置ID")
@PostMapping("saveUserParam")
public void saveUserParam(@RequestBody RoleSetReqVO paramReqVO) {
askService.saveUserParam(paramReqVO);
public String saveUserParam(@RequestBody List<RoleSetNode> paramList) {
return askService.saveUserParam(paramList);
}
@ApiOperation("查询多轮对话中用户需要填写的参数")
@ApiOperation("查询多轮对话中用户需要填写的参数以及回答的码表")
@GetMapping("queryUserNeedParam")
public RoleSetResVO queryUserNeedParam(String sessionId) {
return askService.queryUserNeedParam(sessionId);
public Map<Pair<String, String>, List<Pair<Integer, String>>> queryUserNeedParam() {
return askService.queryUserNeedParam();
}
}

@ -21,6 +21,11 @@ public class SessionParamDTO {
*/
private String sessionId;
/**
* ID
*/
private String roleSetId;
/**
*
*/

@ -1,39 +1,33 @@
package com.supervision.enums;
public enum RetireRoleEnum {
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Pair;
sex("sex", "性别", null),
job("job", "职业", null),
age("age", "年龄", EntityQuestionEnum.),
residentLocation("residentLocation", "户口所在地", EntityQuestionEnum.),
offsiteSocialSecurityInfo("offsiteSocialSecurityInfo", "异地社保转入情况", null),
lastInsuredPlace("lastInsuredPlace", "最后参保地", null),
pensionPaymentPeriod("pensionPaymentPeriod", "养老缴费年限", EntityQuestionEnum.);
import java.util.List;
private final String code;
public enum RetireRoleEnum {
private final String name;
sex("性别", ListUtil.list(false, Pair.of(0, "男"), Pair.of(1, "女"))),
age("年龄", ListUtil.list(false, Pair.of(0, "年满60岁"), Pair.of(1, "未满60岁"))),
socialSecurityType("退休类型", ListUtil.list(false, Pair.of(0, "城乡居民"), Pair.of(1, "企业职工"))),
residentLocation("户口所在地", ListUtil.list(false, Pair.of(0, "深圳户口"), Pair.of(1, "港澳台和外籍人员"), Pair.of(2, "广东省其他地区"), Pair.of(3, "省外户口"))),
offsiteSocialSecurityInfo("异地社保转入情况", ListUtil.list(false, Pair.of(0, "无异地社保"), Pair.of(1, "已转入"), Pair.of(2, "未转入"))),
pensionPaymentPeriod("缴费年限", ListUtil.list(false, Pair.of(0, "实际缴费年限+视同缴费年限满15年"), Pair.of(1, "实际缴费年限+视同缴费年限未满15年")));
/**
*
*/
private final EntityQuestionEnum entityEnum;
private final String zhName;
RetireRoleEnum(String code, String name, EntityQuestionEnum entityEnum) {
this.code = code;
this.name = name;
this.entityEnum = entityEnum;
}
private final List<Pair<Integer, String>> answerList;
public String getCode() {
return code;
RetireRoleEnum(String zhName, List<Pair<Integer, String>> answerList) {
this.zhName = zhName;
this.answerList = answerList;
}
public String getName() {
return name;
public String getZhName() {
return zhName;
}
public EntityQuestionEnum getEntityEnum() {
return entityEnum;
public List<Pair<Integer, String>> getAnswerList() {
return answerList;
}
}

@ -1,8 +1,11 @@
package com.supervision.service;
import cn.hutool.core.lang.Pair;
import com.supervision.vo.*;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
import java.util.Set;
public interface AskService {
@ -11,7 +14,7 @@ public interface AskService {
SingleTalkResVO singleTalk(SingleTalkReqVO singleTalkReqVO);
void saveUserParam(RoleSetReqVO paramReqVO);
String saveUserParam(List<RoleSetNode> paramList);
RoleSetResVO queryUserNeedParam(String sessionId);
Map<Pair<String,String>, List<Pair<Integer,String>>> queryUserNeedParam();
}

@ -2,8 +2,12 @@ package com.supervision.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.dto.roundAsk.EntityQuestionDTO;
import com.supervision.dto.roundAsk.SessionParamDTO;
import com.supervision.enums.EntityQuestionEnum;
@ -24,6 +28,7 @@ import com.supervision.service.AskService;
import com.supervision.vo.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@ -370,19 +375,25 @@ public class AskServiceImpl implements AskService {
*/
private void filterUserRoleSet(SessionParamDTO sessionParamDTO) {
// 再获取用户填写的缓存
Object userParamObject = redisTemplate.opsForValue().get(USER_PARAM + sessionParamDTO.getSessionId());
Object userParamObject = redisTemplate.opsForValue().get(USER_PARAM + sessionParamDTO.getRoleSetId());
if (ObjectUtil.isNotEmpty(userParamObject)) {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(userParamObject, false, true);
for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) {
String key = entry.getKey();
// 去枚举里面去找
RetireRoleEnum roleEnum = Arrays.stream(RetireRoleEnum.values()).filter(e -> e.getCode().equals(key)).findFirst().orElseThrow(() -> new BusinessException("未找到的参数"));
// 如果匹配的实体不为空,就去校验是否存在该实体一致的判断对象
if (null != roleEnum.getEntityEnum()) {
List<RoleSetNode> list = JSONUtil.toList(JSONUtil.toJsonStr(userParamObject), RoleSetNode.class);
for (RoleSetNode roleSetNode : list) {
// 根据编码找到枚举值
RetireRoleEnum retireRoleEnum = RetireRoleEnum.valueOf(roleSetNode.getItemEn());
if (ObjectUtils.isNotEmpty(retireRoleEnum)) {
Map<String, Integer> entityCountMap = sessionParamDTO.getEntityCountMap();
// 如果包含,就去尝试排除路径
if (entityCountMap.containsKey(roleEnum.getEntityEnum().getEntityType())) {
filterPath(sessionParamDTO, String.valueOf(entry.getValue()));
if (entityCountMap.containsKey(retireRoleEnum.getZhName()) && ObjectUtil.isNotEmpty(roleSetNode.getValueNum())) {
List<Pair<Integer, String>> answerList = retireRoleEnum.getAnswerList();
for (Pair<Integer, String> pair : answerList) {
// 如果枚举的key和用户填写的value相等,就排除
if (pair.getKey().equals(roleSetNode.getValueNum())) {
filterPath(sessionParamDTO, pair.getValue());
}
}
}
}
}
@ -397,21 +408,20 @@ public class AskServiceImpl implements AskService {
}
@Override
public void saveUserParam(RoleSetReqVO paramReqVO) {
public String saveUserParam(List<RoleSetNode> paramList) {
String roleSetId = UUID.randomUUID().toString();
// 缓存到Redis中
if (CollUtil.isNotEmpty(paramReqVO.getParamMap()) && StrUtil.isNotBlank(paramReqVO.getSessionId())) {
redisTemplate.opsForValue().set(USER_PARAM + paramReqVO.getSessionId(), paramReqVO.getParamMap());
if (CollUtil.isNotEmpty(paramList)) {
redisTemplate.opsForValue().set(USER_PARAM + roleSetId, paramList);
} else {
throw new BusinessException("参数填写不能为空");
}
return roleSetId;
}
@Override
public RoleSetResVO queryUserNeedParam(String sessionId) {
public Map<Pair<String, String>, List<Pair<Integer, String>>> queryUserNeedParam() {
// 暂时是写死的退休的事项列表,后面再调整优化根据事项修改逻辑
List<String> itemList = Arrays.stream(RetireRoleEnum.values()).map(RetireRoleEnum::getCode).collect(Collectors.toList());
RoleSetResVO roleSetResVO = new RoleSetResVO();
roleSetResVO.setSessionId(sessionId);
roleSetResVO.setParam(itemList);
return roleSetResVO;
return Arrays.stream(RetireRoleEnum.values()).collect(Collectors.toMap(e -> Pair.of(e.name(), e.getZhName()), RetireRoleEnum::getAnswerList));
}
}

@ -0,0 +1,14 @@
package com.supervision.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class RoleSetNode {
@ApiModelProperty("项目的英文名")
private String itemEn;
@ApiModelProperty("值的编码数值")
private Integer valueNum;
}

@ -1,5 +1,6 @@
package com.supervision.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ -9,12 +10,10 @@ import java.util.Map;
public class RoleSetReqVO {
private String sessionId;
private String roleSetId;
/**
* ,keycode,value
*/
private Map<String, String> paramMap;
@ApiModelProperty("用户填写的数据")
private List<RoleSetNode> paramList;
}

@ -7,6 +7,8 @@ public class RoundTalkReqVO {
private String sessionId;
private String roleSetId;
private String userTalk;
}

Loading…
Cancel
Save