代码提交

main
liu 10 months ago
parent 82e1578c1e
commit f578a3ebe5

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

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

@ -1,39 +1,33 @@
package com.supervision.enums; package com.supervision.enums;
public enum RetireRoleEnum { import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Pair;
sex("sex", "性别", null), import java.util.List;
job("job", "职业", null),
age("age", "年龄", EntityQuestionEnum.),
residentLocation("residentLocation", "户口所在地", EntityQuestionEnum.),
offsiteSocialSecurityInfo("offsiteSocialSecurityInfo", "异地社保转入情况", null),
lastInsuredPlace("lastInsuredPlace", "最后参保地", null),
pensionPaymentPeriod("pensionPaymentPeriod", "养老缴费年限", EntityQuestionEnum.);
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 String zhName;
*
*/
private final EntityQuestionEnum entityEnum;
RetireRoleEnum(String code, String name, EntityQuestionEnum entityEnum) { private final List<Pair<Integer, String>> answerList;
this.code = code;
this.name = name;
this.entityEnum = entityEnum;
}
public String getCode() { RetireRoleEnum(String zhName, List<Pair<Integer, String>> answerList) {
return code; this.zhName = zhName;
this.answerList = answerList;
} }
public String getName() { public String getZhName() {
return name; return zhName;
} }
public EntityQuestionEnum getEntityEnum() { public List<Pair<Integer, String>> getAnswerList() {
return entityEnum; return answerList;
} }
} }

@ -1,8 +1,11 @@
package com.supervision.service; package com.supervision.service;
import cn.hutool.core.lang.Pair;
import com.supervision.vo.*; import com.supervision.vo.*;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
public interface AskService { public interface AskService {
@ -11,7 +14,7 @@ public interface AskService {
SingleTalkResVO singleTalk(SingleTalkReqVO singleTalkReqVO); 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.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; 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.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.dto.roundAsk.EntityQuestionDTO; import com.supervision.dto.roundAsk.EntityQuestionDTO;
import com.supervision.dto.roundAsk.SessionParamDTO; import com.supervision.dto.roundAsk.SessionParamDTO;
import com.supervision.enums.EntityQuestionEnum; import com.supervision.enums.EntityQuestionEnum;
@ -24,6 +28,7 @@ import com.supervision.service.AskService;
import com.supervision.vo.*; import com.supervision.vo.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -370,19 +375,25 @@ public class AskServiceImpl implements AskService {
*/ */
private void filterUserRoleSet(SessionParamDTO sessionParamDTO) { 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)) { if (ObjectUtil.isNotEmpty(userParamObject)) {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(userParamObject, false, true); List<RoleSetNode> list = JSONUtil.toList(JSONUtil.toJsonStr(userParamObject), RoleSetNode.class);
for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) { for (RoleSetNode roleSetNode : list) {
String key = entry.getKey(); // 根据编码找到枚举值
// 去枚举里面去找 RetireRoleEnum retireRoleEnum = RetireRoleEnum.valueOf(roleSetNode.getItemEn());
RetireRoleEnum roleEnum = Arrays.stream(RetireRoleEnum.values()).filter(e -> e.getCode().equals(key)).findFirst().orElseThrow(() -> new BusinessException("未找到的参数")); if (ObjectUtils.isNotEmpty(retireRoleEnum)) {
// 如果匹配的实体不为空,就去校验是否存在该实体一致的判断对象
if (null != roleEnum.getEntityEnum()) {
Map<String, Integer> entityCountMap = sessionParamDTO.getEntityCountMap(); Map<String, Integer> entityCountMap = sessionParamDTO.getEntityCountMap();
// 如果包含,就去尝试排除路径 // 如果包含,就去尝试排除路径
if (entityCountMap.containsKey(roleEnum.getEntityEnum().getEntityType())) { if (entityCountMap.containsKey(retireRoleEnum.getZhName()) && ObjectUtil.isNotEmpty(roleSetNode.getValueNum())) {
filterPath(sessionParamDTO, String.valueOf(entry.getValue())); 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 @Override
public void saveUserParam(RoleSetReqVO paramReqVO) { public String saveUserParam(List<RoleSetNode> paramList) {
String roleSetId = UUID.randomUUID().toString();
// 缓存到Redis中 // 缓存到Redis中
if (CollUtil.isNotEmpty(paramReqVO.getParamMap()) && StrUtil.isNotBlank(paramReqVO.getSessionId())) { if (CollUtil.isNotEmpty(paramList)) {
redisTemplate.opsForValue().set(USER_PARAM + paramReqVO.getSessionId(), paramReqVO.getParamMap()); redisTemplate.opsForValue().set(USER_PARAM + roleSetId, paramList);
} else {
throw new BusinessException("参数填写不能为空");
} }
return roleSetId;
} }
@Override @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()); return Arrays.stream(RetireRoleEnum.values()).collect(Collectors.toMap(e -> Pair.of(e.name(), e.getZhName()), RetireRoleEnum::getAnswerList));
RoleSetResVO roleSetResVO = new RoleSetResVO();
roleSetResVO.setSessionId(sessionId);
roleSetResVO.setParam(itemList);
return roleSetResVO;
} }
} }

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

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

Loading…
Cancel
Save