@Override
public void importPerson(String imp_projectid, List<DoorGuardPerson> subList, ImportMode mode)
throws Exception {
//取出待导入的人员编号
List<String> personids = subList.stream().map(p -> p.getPersonid()).collect(Collectors.toList());
//查询已经存在的项目设备
List<DoorGuardPerson> existPersons = doorGuPersonMapper.queryPersons(personids);
//追加模式或者全部模式
if (mode.isAppendMode() || mode.isAppendAndUpdateMode()){
//查找不存在的人员
List<DoorGuardPerson> noneExistPersons = subList.stream().filter(p -> !isPersonExist(existPersons, p.getPersonid())).collect(Collectors.toList());
if (noneExistPersons != null && noneExistPersons.size() > 0){
//将formbean转换为person对象
List<DoorGuardPerson> noneExistPerson = noneExistPersons.stream().map(p -> p.toDoorGuardPerson()).collect(Collectors.toList());
if (noneExistPerson != null && noneExistPerson.size() > 0){
doorGuPersonMapper.batchInsert(noneExistPerson); //批量插入
}
}
}
//更新模式或者全部模式
if (mode.isUpdateMode() || mode.isAppendAndUpdateMode()){
if (existPersons != null && existPersons.size() > 0){
for (DoorGuardPerson existPerson : existPersons){
innerFullSet(existPerson, innerFind(subList, existPerson.getPersonid()));
}
//批量更新
doorGuPersonMapper.batchUpdate(existPersons);
}
}
//批量删除模式(分为普通的批量删除和强制批量删除)
if (mode.isDeleteMode()) {
/*String[] perids = existPersons.stream().map(p -> p.getPersonid()).collect(Collectors.toList()).toArray(new String[0]);
List<String> personidList = new ArrayList<String>();
if (perids != null && perids.length > 0){
for(String perid : perids){
personidList.add(perid);
}
doorGuPersonMapper.removeDoorGuardPersons(personidList);
}*/
//已经有了,不需要数组转list了
doorGuPersonMapper.removeDoorGuardPersons(personids);
}
}
private void innerFullSet(DoorGuardPerson existPerson, DoorGuardPerson innerFind) {
if (existPerson == null){
return;
}
/*
personid 人员编号 VARCHAR(50) N 主键
name 姓名 VARCHAR(100) N
idcard 身份证号码 VARCHAR(20) Y
sex 性别 Byte 1 N 1--男;0--女;
age 年龄 Byte 0 Y
job 职务 Varchar(100) Y
department 单位或部门 Varchar(100) Y
birthday 出生日期 Date Y
addr 住址 VARCHAR(100) Y
telephone 手机号码 VARCHAR(50) Y
email EMAIL邮箱 VARCHAR(100) Y
edu 学历 VARCHAR(20) Y
flag 人员类别 Int 0 Y 0--持卡人;1--管理人员;2--临时访客;
photo 照片文件路径 VARCHAR(200) Y
areaid 所在区域 VARCHAR(200) Y
projectid 项目ID VARCHAR(200) N 归属项目
remark 备注 VARCHAR(200) Y 附加信息
*/
if (!StringUtils.isEmpty(innerFind.getName())){
existPerson.setName(innerFind.getName());
}
if (!StringUtils.isEmpty(innerFind.getIdcard())){
existPerson.setIdcard(innerFind.getIdcard());
}
if (innerFind.getSex()!=null){
existPerson.setSex(innerFind.getSex());
}
if (innerFind.getAge()!=null){
existPerson.setAge(innerFind.getAge());
}
if (!StringUtils.isEmpty(innerFind.getJob())){
existPerson.setJob(innerFind.getJob());
}
if (!StringUtils.isEmpty(innerFind.getDepartment())){
existPerson.setDepartment(innerFind.getDepartment());
}
if (innerFind.getBirthday()!=null){
existPerson.setBirthday(innerFind.getBirthday());
}
if (!StringUtils.isEmpty(innerFind.getAddr())){
existPerson.setAddr(innerFind.getAddr());
}
if (!StringUtils.isEmpty(innerFind.getTelephone())){
existPerson.setTelephone(innerFind.getTelephone());
}
if (!StringUtils.isEmpty(innerFind.getEmail())){
existPerson.setEmail(innerFind.getEmail());
}
if (!StringUtils.isEmpty(innerFind.getEdu())){
existPerson.setEdu(innerFind.getEdu());
}
existPerson.setFlag(innerFind.getFlag());
if (!StringUtils.isEmpty(innerFind.getAreaid())){
existPerson.setAreaid(innerFind.getAreaid());
}
if (!StringUtils.isEmpty(innerFind.getProjectid())){
existPerson.setProjectid(innerFind.getProjectid());
}
if (!StringUtils.isEmpty(innerFind.getRemark())){
existPerson.setRemark(innerFind.getRemark());
}
}
private DoorGuardPerson innerFind(List<DoorGuardPerson> subList, String personid) {
for (DoorGuardPerson bean : subList){
if (StringUtils.equals(bean.getPersonid(), personid)){
return bean;
}
}
return null;
}
private boolean isPersonExist(List<DoorGuardPerson> existPersons, String personid) {
for (DoorGuardPerson existPerson : existPersons){
if (StringUtils.equals(existPerson.getPersonid(), personid)){
return true;
}
}
return false;
}