@RestController
@RequestMapping("/ClientUserAssist/")
public class ClientUserAssistController {
@Autowired
ClientUserAssistMapper clientUserAssistMapper;
/**子系统数据导入接口**/
@Transactional(rollbackFor = Exception.class)
@PostMapping("/importUser")
public AjaxJson handleJsonArray(@RequestBody List<SoMap> clientUserObjects) {
HashMap<String, String> mapping = SpConfigUtil.clientUserMappingToSsoUser().stream()
.collect(Collectors.toMap(SpConfig::getName, SpConfig::getValue, (s1, s2) -> s2, HashMap::new));
// 后台配置客户端唯一标识clientSourceConfig
String clientSource = SpConfigUtil.getConfigValue("clientSourceConfig", "error");
List<ClientUserAssist> clientUserAssistList = clientUserObjects.stream().map(soMap -> {
ClientUserAssist clientUserAssist = filter(soMap, mapping);
clientUserAssist.setClientSource(clientSource);
return clientUserAssist;
}).collect(Collectors.toList());
clientUserAssistMapper.batchInsertUsers(clientUserAssistList);
return AjaxJson.getSuccess();
}
private ClientUserAssist filter(SoMap clientUserMap, Map<String, String> link) {
ClientUserAssist clientUserAssist = new ClientUserAssist();
for (Field field : clientUserAssist.getClass().getDeclaredFields()) {
try {
Object value = clientUserMap.get(link.get(field.getName()));
if (value == null) {
continue;
}
field.setAccessible(true);
Object valueConvert = getValueByClass(value, field.getType());
field.set(clientUserAssist, valueConvert);
} catch (IllegalArgumentException | IllegalAccessException e) {
throw new RuntimeException("属性取值出错:" + field.getName(), e);
}
}
return clientUserAssist;
}
private <T> T getValueByClass(Object obj, Class<T> cs) {
String obj2 = String.valueOf(obj);
Object obj3;
if (cs.equals(String.class)) {
obj3 = obj2;
} else if (cs.equals(int.class) || cs.equals(Integer.class)) {
obj3 = Integer.valueOf(obj2);
} else if (cs.equals(long.class) || cs.equals(Long.class)) {
obj3 = Long.valueOf(obj2);
} else if (cs.equals(short.class) || cs.equals(Short.class)) {
obj3 = Short.valueOf(obj2);
} else if (cs.equals(byte.class) || cs.equals(Byte.class)) {
obj3 = Byte.valueOf(obj2);
} else if (cs.equals(float.class) || cs.equals(Float.class)) {
obj3 = Float.valueOf(obj2);
} else if (cs.equals(double.class) || cs.equals(Double.class)) {
obj3 = Double.valueOf(obj2);
} else if (cs.equals(boolean.class) || cs.equals(Boolean.class)) {
obj3 = Boolean.valueOf(obj2);
} else if (cs.equals(Date.class)) {
obj3 = new Date(Long.parseLong(obj2));
} else {
obj3 = (T) obj;
}
return (T) obj3;
}
}