我需要为已经执行编程逻辑的方法创建一个传递。我需要传递两个查询参数,一个是现有数据列表的映射(日期),另一个是我们要从资源文件发送的新数据(日期)。最终响应应该是数据列表(日期)的映射。 我面临的问题是在调用现有方法时,我需要发送整个对象,为此,我需要创建一个虚拟对象并填充它。但是不确定如何做到吗?
现有方法:
public static <T extends EffectiveExpiresActive> Pair<List<T>,
List<Pair<T, String>>> updateEffExpAct(
List<T> existingList, T toAdd) {
*****一些逻辑***
return Pair.of(mergedList, changedRecords);
}
此方法返回新列表,从这里我们只需要合并列表。
控制器方法:
@GetMapping("/calculateValiditiesGivenNewValidity")
public Map<Integer, ValidityComponent> calculateValiditiesGivenNewValidity(
@RequestParam List<CalculateValidityResource> valreso) {
return EffectiveExpiresActiveUtil
.updateEffExpAct(valreso.stream().getClass(), valreso.stream().forEach(e -> e.getNews())).getKey()
.stream().map(ValidityComponent::new).collect(Collectors.toList());
}
我尝试了类似上述的操作,但仅在编写时出错。
资源文件:
@NoArgsConstructor
@Data
public class CalculateValidityResource {
private Map<Integer, ValidityComponent> existing = new HashMap<>();
private ValidityComponent news;
}
虚拟对象已创建:
public class CalculateValidity implements EffectiveExpires {
@Override
public LocalDate getEffectiveDate() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setEffectiveDate(LocalDate effectiveDate) {
// TODO Auto-generated method stub
}
@Override
public LocalDate getExpirationDate() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setExpirationDate(LocalDate expirationDate) {
// TODO Auto-generated method stub
}
}
仅供参考:请求应该是这样的
查询参数:
现有: (需要) (宾语) 这将是一个整数:资源ID与其有效性的对象映射。
它是列表的映射,同时包含生效日期和到期日期。 新: (需要) 这也有一个有效期
确切地说,这必须通过(请求):
?existing =%7B“ 1”:%7B“有效开始”:“ 2019-01-01”,“ expiresAfter”:“ 2019-12-31”%7D,“ 2”:%7B“有效开始”: “ 2020-01-01”,“ expiresAfter”:“ 2020-12-31”%7D%7D&new =%7B“有效开始”:“ 2019-07-01”,“ expiresAfter”:“ 2020-06-30”% 7D
响应为:
{"1":\{"effectiveStarting":"2019-01-01","expiresAfter":"2019-06-30"}
,"2":{"effectiveStarting":"2020-07-01","expiresAfter":"2020-12-31"}}