package com.cloud.user.service.impl; import com.alibaba.fastjson.JSONObject; import com.cloud.common.constants.GlobalDict; import com.cloud.common.model.FileInfos; import com.cloud.common.utils.*; import com.cloud.model.common.Page; import com.cloud.model.sys.*; import com.cloud.model.sys.constants.CredentialType; import com.cloud.user.constants.EmpTypeConstant; import com.cloud.user.dao.*; import com.cloud.user.model.BbFace; import com.cloud.user.service.BbEmployeeService; import com.cloud.user.service.TokenService; import com.cloud.user.utils.EnumStr; import com.cloud.user.utils.FaceUtil; import com.cloud.user.vo.BbEmployeeRelationVO; import com.cloud.user.vo.BbEmployeeVO; import lombok.extern.log4j.Log4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.*; import java.util.List; /** * 人员 * 业务层 */ @Log4j @Service public class BbEmployeeServiceImpl implements BbEmployeeService { @Autowired private BbEmployeeDao dao; @Autowired private SysOrganizationDao orgDao; @Autowired private BbFaceDao bbFaceDao; // @Autowired // private SysOrganizationService orgService; @Autowired private BbEmployeeRelationDao brDao; @Autowired private TokenService tokenService; @Autowired private RestTemplateUtil restTemplateUtil; @Autowired private UserRoleDao userRoleDao; @Autowired private EnumStr enumStr; @Autowired private AppUserDao userDao; @Autowired private UserCredentialsDao userCredentialsDao; @Autowired private FastDFSUtil fastDFSUtil; /** * 根据主键查询 * @param orgId */ @Override public BbEmployee findById(String id, Long orgId) { Map params = new HashMap(); params.put("id", id); if (orgId != null && !"".equals(orgId)) { params.put("orgId", orgId); } return dao.findById(params); } /** * 根据主键删除 * @param params */ @Override public Map deleteById(Map params) { Map map = new HashMap(); Integer status = dao.deleteById(params); if(status > 0){ //同时逻辑删除人脸ID //bbFaceDao.deleteByUserId(params); //delete 删除人脸ID //bbFaceDao.deleteByUserId((String) params.get("id")); dao.deleteMergePerson((String) params.get("id")); map.put("code","0"); map.put("message","删除成功!!!"); }else{ map.put("code","1"); map.put("message","删除失败!!!"); } return map; } @Override public Map deleteByIdFromTemp(String id) { Map map = new HashMap(); Integer status = dao.deleteByIdFromTemp(id); if(status > 0){ bbFaceDao.deleteByUserId(id); map.put("code","0"); map.put("message","删除成功!!!"); }else{ map.put("code","1"); map.put("message","删除失败!!!"); } return map; } /** * 添加, 没有业务 */ @Override public Integer add(BbEmployee bean) { // bean.preInsert(tokenService.currentUser()); // if (bean.getOrgNamesJson() == null || "".equals(bean.getOrgNamesJson())) { // bean.setOrgNamesJson("{}"); // } // if (bean.getRevJson1() == null || "".equals(bean.getRevJson1())) { // bean.setRevJson1("{}"); // } return 0; } @Override public Map isRepeatIdCard(Map param) { Map map = new HashMap(); int count = dao.isRepeatIdCard(param); if(count==0){ map.put("code","0"); map.put("message","底库无此身份证号,可以使用!"); }else{ map.put("code","1"); map.put("message","跟底库已有的身份证号重复!"); } return map; } @Override public JSONObject clusterLocaltion(String clusterIds) { JSONObject paramMap = new JSONObject(); paramMap.put("clusterIds",clusterIds); String post = restTemplateUtil.post(enumStr.getClusterLocaltion(), paramMap , MediaType.APPLICATION_JSON_UTF8, true); JSONObject jsonMap = JSONObject.parseObject(post); return jsonMap; } @Override public JSONObject singleEdit(MultipartFile file,String exPersonId) { FileInfos fileInfos = fastDFSUtil.upload(file); JSONObject paramMap = new JSONObject(); paramMap.put("fileInfos",fileInfos); paramMap.put("exPersonId",exPersonId); Long time = System.currentTimeMillis(); String post = restTemplateUtil.postImg(enumStr.getSingleEdit(), paramMap, MediaType.APPLICATION_JSON_UTF8,String.class, true ); System.out.println("往返时间是"+(System.currentTimeMillis()-time)+"毫秒"); JSONObject jsonMap = JSONObject.parseObject(post); System.out.println("返回的结果是"+JSONObject.parseObject(post) ); return jsonMap; } /** * 编辑, 没有业务 */ @Override public BbEmployee update(BbEmployee bean) { bean.preUpdate(tokenService.currentUser()); // 查找要编辑的数据库实体 BbEmployee dbBean = findById(bean.getId(), bean.getOrgId()); // 设置要修改的属性 dbBean.setOfficeId(bean.getOfficeId()); //部门Id dbBean.setCardId(bean.getCardId()); //身份证号 dbBean.setName(bean.getName()); //姓名 dbBean.setGender(bean.getGender()); //性别 dbBean.setNation(bean.getNation()); //民族 dbBean.setPhone(bean.getPhone()); //电话 dbBean.setType(bean.getType()); //人员类型(学生、职工、校外) dbBean.setOrgNamesJson(bean.getOrgNamesJson()); //组织结构名称冗余 dbBean.setPhotos(bean.getPhotos()); //人员照片(格式 dbBean.setFaceIds(bean.getFaceIds()); //人脸Id(格式 dbBean.setRemarks(bean.getRemarks()); //备注信息 dbBean.setRevJson1(bean.getRevJson1()); //预留json格式字段1 dao.update(dbBean); return dbBean; } /** * 添加,包含业务 */ @Transactional @Override public JSONObject addBbEmployee(MultipartFile[] files,Integer orgId,Integer officeId) { List list = new ArrayList<>(); //JSONArray jsonArray = new JSONArray(); for (MultipartFile file : files) { FileInfos fileInfos = fastDFSUtil.upload(file); list.add(fileInfos); // jsonArray.add(fileInfos); } JSONObject paramMap = new JSONObject(); paramMap.put("list",list); /// wp 修改 if(orgId == null || officeId == null ){ LoginAppUser appUser = tokenService.currentUser(); orgId = Integer.valueOf(appUser.getOrgId().toString()); officeId = appUser.getOfficeId(); } paramMap.put("orgId",orgId); paramMap.put("officeId",officeId); Long time = System.currentTimeMillis(); String post = restTemplateUtil.postImg(enumStr.getUploadImgUrl(), paramMap, MediaType.APPLICATION_JSON_UTF8,String.class, true ); System.out.println("往返时间是"+(System.currentTimeMillis()-time)+"毫秒"); JSONObject jsonMap = JSONObject.parseObject(post); System.out.println("返回的结果是"+JSONObject.parseObject(post)); return jsonMap; } /** * 添加人员关系 * @return */ private Integer addEmpRelations(List list,BbEmployeeVO bbEmployeeVO){ Integer state = 0; if(list.size() > 0){ for(BbEmployeeRelationVO bbEmployeeRelationVO:list){ bbEmployeeRelationVO.setOrgId(bbEmployeeVO.getOrgId()); bbEmployeeRelationVO.setEmployeeId(bbEmployeeVO.getId()); bbEmployeeRelationVO.preInsert(tokenService.currentUser()); state = brDao.add(bbEmployeeRelationVO); } } return state; } /** * 编辑,包含业务 */ @Transactional @Override public void updateBbEmployee(BbEmployeeVO beanVO) { // 查找要编辑的数据库实体 BbEmployee dbBean = findById(beanVO.getId(), beanVO.getOrgId()); if(dbBean.getPhotos()!=null&&!dbBean.getPhotos().equals(beanVO.getPhotos())){ Map params = new HashMap<>(); params.put("id",beanVO.getId()); params.put("orgId",beanVO.getOrgId()); bbFaceDao.deleteByUserId((String) params.get("id")); //根据图片路径获得人脸ID try { byte[] bytesFaces = ReadUrlImg.getImgByte(imgHttpUrl+beanVO.getPhotos()); //获取人脸特征 String faces = FaceUtil.extractFeature(bytesFaces,null); //人脸特征不为空时 if(faces!=null&&!faces.isEmpty()){ Integer bbFaciId = bbFaceDao.findIdByFaces(faces); if(bbFaciId == null){ BbFace bbFace = new BbFace(); bbFace.setOrgId(beanVO.getOrgId()); bbFace.setFeature(faces); bbFaceDao.save(bbFace); beanVO.setFaceIds(bbFace.getId().toString()); } }else{ beanVO.setFaceIds(""); } }catch (IOException e){ System.out.println(e.getMessage()); } } beanVO.preUpdate(tokenService.currentUser()); dao.updateBbEmpId(beanVO); } @Transactional @Override public void saveTemp(BbEmployee bean, String isMerge, String mergeFrom, String roleId) { //保存角色信息,如果有的话(每次都删除原有的再绑定新的角色) if(roleId!=null&&!"".equals(roleId)){ //判断用户名是否存在 UserCredential userCredential = userCredentialsDao.findByUsername(bean.getUserName(),bean.getUserId()); if (userCredential != null) { throw new IllegalArgumentException("用户名已存在"); } //删除旧的用户角色关联 Map paramMap = new HashMap(); paramMap.put("id",bean.getUserId()); userRoleDao.deleteUserRole(paramMap); //创建一个新用户 if(bean.getUserName()!=null){ Map bbperson = dao.anyThingToUpdate(bean.getId()); if(bbperson==null){ //证明在底库没有找到,去临时库找一下 bbperson = dao.tempToUpdate(bean.getId()); } AppUser user = null; if(bbperson.get("userId")!=null&&!bbperson.get("userId").equals("")){ Map map = new HashMap<>(); map.put("id",(int)bbperson.get("userId")); user = userDao.findById(map); }else{ user = new AppUser(); } user.setUsername(bean.getUserName()); user.setPassword(MD5Util.encode("000000")); user.setOrgId(bean.getOrgId()); user.setEnabled(Boolean.TRUE); user.setOfficeId(bean.getOfficeId().intValue()); if(tokenService.currentUser()!=null){ user.preInsert(tokenService.currentUser()); } userDao.save(user); //添加用户凭证,不清楚添加的必要,但有用的地方 Long uid = user.getId(); userCredentialsDao.save(new UserCredential(user.getUsername(), CredentialType.USERNAME.name(), uid,user.getOrgId())); bean.setUserId(user.getId()); log.info("新创建的用户id是"+user.getId()); //建立新的用户角色关联 String[] roleIds = roleId.split(","); for (String id : roleIds) { Map paramMap1 = new HashMap(); Map paramMap2 = new HashMap(); paramMap2.put("id",bean.getId()); paramMap1.put("userId",user.getId()); paramMap1.put("roleId",Integer.valueOf(id)); paramMap1.put("orgId",bean.getOrgId()); userRoleDao.saveUserRoles(paramMap1); } } }else{ Map bbperson = dao.anyThingToUpdate(bean.getId()); if(bbperson==null){ //证明在底库没有找到,去临时库找一下 bbperson = dao.tempToUpdate(bean.getId()); } if(bbperson.get("userId")!=null&&!bbperson.get("userId").equals("")){ Map paramMap = new HashMap(); paramMap.put("id",bean.getUserId()); userRoleDao.deleteUserRole(paramMap); } } //去人员添加模块保存人员信息 JSONObject paramMap = new JSONObject(); paramMap.put("bean",bean); paramMap.put("isMerge",isMerge); paramMap.put("mergeFrom",mergeFrom); String post = restTemplateUtil.post(enumStr.getEditToSave(), paramMap, MediaType.APPLICATION_JSON_UTF8, true); } @Override public void saveUpload(BbEmployee bean, String isMerge, String mergeFrom) { // if(roleId!=null&&!"".equals(roleId)){ // //删除旧的用户角色关联 // Map paramMap = new HashMap(); // paramMap.put("id",bean.getUserId()); // userRoleDao.deleteUserRole(paramMap); // //创建一个新用户 // if(bean.getUserName()!=null){ // AppUser user = new AppUser(); // user.setUsername(bean.getUserName()); // if(tokenService.currentUser()!=null){ // user.preInsert(tokenService.currentUser()); // } // userDao.save(user); // bean.setUserId(user.getId()); // log.info("新创建的用户id是"+user.getId()); // //建立新的用户角色关联 // String[] roleIds = roleId.split(","); // for (String id : roleIds) { // Map paramMap1 = new HashMap(); // Map paramMap2 = new HashMap(); // paramMap2.put("id",bean.getId()); // paramMap1.put("userId",user.getId()); // paramMap1.put("roleId",Integer.valueOf(id)); // paramMap1.put("orgId",bean.getOrgId()); // userRoleDao.saveUserRoles(paramMap1); // } // } // } //去人员添加模块保存人员信息 JSONObject paramMap = new JSONObject(); paramMap.put("bean",bean); paramMap.put("isMerge",isMerge); paramMap.put("mergeFrom",mergeFrom); //String url="http://192.168.1.203:3697/addPerson/save"; String post = restTemplateUtil.post(enumStr.getUploadToSave(), paramMap, MediaType.APPLICATION_JSON_UTF8, true); } @Transactional @Override public String anyThingToSave(BbEmployee bean, String roleId) { String isNewAppUser = null; // 修改时初始人员 需要给定 密码 Map bbperson = null;long userId = 0; if(bean.getId()!=null&&!"".equals(bean.getId())){ bbperson = dao.anyThingToUpdate(bean.getId()); if(bbperson.get("userId")!=null){ userId = Long.valueOf(""+bbperson.get("userId")); } } //判断用户名是否存在 if(bean.getUserName()!=null){ UserCredential userCredential = userCredentialsDao.findByUsername(bean.getUserName(),userId); if (userCredential != null) { throw new IllegalArgumentException("用户名已存在."); } } try{ if(bean.getId()!=null&&!"".equals(bean.getId())){ log.info("保存用户信息"); if(roleId!=null&&!"".equals(roleId)){ //删除旧的用户角色关联 Map paramMap = new HashMap(); paramMap.put("id",bean.getUserId()); userRoleDao.deleteUserRole(paramMap); //创建一个新用户 if(bean.getUserName()!=null){ // Map bbperson = dao.anyThingToUpdate(bean.getId()); AppUser user = new AppUser(); user.setOrgId(bean.getOrgId()); user.setEnabled(Boolean.TRUE); user.setOfficeId(bean.getOfficeId().intValue()); if(tokenService.currentUser()!=null){ user.preUpdate(tokenService.currentUser()); } if(bbperson.get("userId")!=null&&!bbperson.get("userId").equals("")){ Map map = new HashMap<>(); map.put("id",(int)bbperson.get("userId")); user = userDao.findById(map); user.setUsername(bean.getUserName()); user.setOrgId(bean.getOrgId()); user.setEnabled(Boolean.TRUE); user.setOfficeId(bean.getOfficeId().intValue()); if(tokenService.currentUser()!=null){ user.preUpdate(tokenService.currentUser()); } // user.setPassword(MD5Util.encode("000000")); // 不能修改密码 userDao.update(user); userCredentialsDao.updateUserInfo(new UserCredential(user.getUsername(), CredentialType.USERNAME.name(), user.getId(),user.getOrgId())); log.info("被修改的用户id是"+user.getId()); }else{ user.setUsername(bean.getUserName()); user.setPassword(MD5Util.encode("000000")); userDao.save(user); //添加用户凭证,不清楚添加的必要,但有用的地方 Long uid = user.getId(); userCredentialsDao.save(new UserCredential(user.getUsername(), CredentialType.USERNAME.name(), uid,user.getOrgId())); log.info("新创建的用户id是"+user.getId()); isNewAppUser = "已经设置该用户初始密码为000000"; } bean.setUserId(user.getId()); //建立新的用户角色关联 String[] roleIds = roleId.split(","); for (String id : roleIds) { Map paramMap1 = new HashMap(); Map paramMap2 = new HashMap(); paramMap2.put("id",bean.getId()); paramMap1.put("userId",user.getId()); paramMap1.put("roleId",Integer.valueOf(id)); paramMap1.put("orgId",bean.getOrgId()); userRoleDao.saveUserRoles(paramMap1); } } }else{ // Map bbperson = dao.anyThingToUpdate(bean.getId()); if(bbperson==null){ //证明在底库没有找到,去临时库找一下 bbperson = dao.tempToUpdate(bean.getId()); } if(bbperson.get("userId")!=null&&!bbperson.get("userId").equals("")){ Map paramMap = new HashMap(); paramMap.put("id",bean.getUserId()); userRoleDao.deleteUserRole(paramMap); } } JSONObject paramMap = new JSONObject(); paramMap.put("bean",bean); String post = restTemplateUtil.post(enumStr.getAnyThingToSave(), paramMap, MediaType.APPLICATION_JSON_UTF8, true); }else{ log.info("新增人员"); if(roleId!=null&&!"".equals(roleId)){ if(bean.getUserName()!=null){ //创建系统用户 AppUser user = new AppUser(); user.setUsername(bean.getUserName()); if(tokenService.currentUser()!=null){ user.preInsert(tokenService.currentUser()); } userDao.save(user); bean.setUserId(user.getId()); log.info("新创建的用户id是"+user.getId()); //建立新的用户角色关联 String[] roleIds = roleId.split(","); for (String id : roleIds) { Map paramMap1 = new HashMap(); Map paramMap2 = new HashMap(); paramMap2.put("id",bean.getId()); paramMap1.put("userId",user.getId()); paramMap1.put("roleId",Integer.valueOf(id)); paramMap1.put("orgId",bean.getOrgId()); userRoleDao.saveUserRoles(paramMap1); } } } JSONObject paramMap = new JSONObject(); paramMap.put("bean",bean); String post = restTemplateUtil.post(enumStr.getAddSingle(), paramMap, MediaType.APPLICATION_JSON_UTF8, true); JSONObject jsonMap = JSONObject.parseObject(post); String personId = jsonMap.getString("data"); } return isNewAppUser; // 神烦 }catch (Exception e){ e.printStackTrace(); } return isNewAppUser; // 神烦 } @Override public Map anyThingToUpdate(BbEmployee bean) { Map map = new HashMap<>(); Map bbperson = dao.anyThingToUpdate(bean.getId()); List roleIds = null; if(bbperson.get("userId")!=null&&!"".equals(bbperson.get("userId"))){ roleIds = userRoleDao.findRolesIds(Long.valueOf(bbperson.get("userId").toString())); } String colonyIdStr = (String)bbperson.get("distributionIds"); JSONObject paramMap = new JSONObject(); paramMap.put("clusterIds",colonyIdStr); String post = restTemplateUtil.post(enumStr.getClusterLocaltion(), paramMap , MediaType.APPLICATION_JSON_UTF8, true); JSONObject jsonMap = JSONObject.parseObject(post); map.put("bbPerson",bbperson); map.put("roleIds",roleIds); map.put("colonys",jsonMap.get("data")); return map; } @Override public Map queryPersonSimpleInfoById(String perId,Boolean delFlag) { Map map = new HashMap<>(); Map bbperson = dao.selectPersonDetailById(perId,delFlag); return bbperson; } /** * 去编辑,包含业务 */ @Override public Map toUpdateBbEmployee(BbEmployee bean) { // 查找要编辑的数据库实体 BbEmployee dbBean = dao.findByIdFromTemp(bean.getId()); JSONObject paramMap = new JSONObject(); paramMap.put("feature",dbBean.getFeature()); String post = restTemplateUtil.post(enumStr.getToUpdateUrl(), paramMap, MediaType.APPLICATION_JSON_UTF8, true); JSONObject jsonMap = JSONObject.parseObject(post); // List bbpersons = JSONObject.parseArray(post, BbEmployee.class); // JSONObject paramMap1 = new JSONObject(); // paramMap.put("clusterIds",dbBean.getDistributionIds()); // String post1 = restTemplateUtil.post(enumStr.getClusterLocaltion(), paramMap , MediaType.APPLICATION_JSON_UTF8, true); // JSONObject jsonMap1 = JSONObject.parseObject(post1); //把特征值过滤掉不往前台传; dbBean.setFeature(null); Map map = new HashMap<>(); map.put("bbPerson",dbBean); map.put("likerPerson",jsonMap.get("data")); // map.put("colonys",jsonMap1.get("data")); return map; } /** * 分页查询 */ @Override public Page findBbEmployees(Map params) { //前台传参是否查全部 // if(params.containsKey("isAll")){ // if(params.get("isAll").toString().equals("0")){ // params.remove("orgId"); // } // } //Long id = Long.parseLong(params.get("id").toString()); //String parentIds = orgDao.findCurentParentIds(id,null); //Map param = new HashMap<>(); //param.put("parentIds",parentIds); //List orgs = orgService.findDownByOffIds(param); //params.put("orgIds",orgs); PageUtil.pageParamConver(params, true); List list = Collections.emptyList(); Page data = new Page<>(0, list); if(params.get("id").toString().equals("001")){ //查总库全部 int total = dao.countBase(params); if(total>0){ list = dao.findDataFromBase(params); } data = new Page<>(total, list); }else if(params.get("id").toString().equals("002")){ //查临时库全部 int total = dao.countTemp(params); if(total>0){ list = dao.findDataFromTemp(params); } data = new Page<>(total, list); }else{ //按组织ID去查 int total = dao.count(params); if(total>0){ list = dao.findData(params); } data = new Page<>(total, list); } return data; } @Override public Integer deleteByIds(Map params, Object object) { return dao.deleteByIds(params); } @Override public Page findOrgEmployeeByType(Map params) { //根据学校IDparentsId参数 Long cruentId = Long.parseLong(params.get("id").toString()); Long orgId = Long.parseLong(params.get("orgId").toString()); String parentIds = orgDao.findCurentParentIds(cruentId,null); params.put("parentIds",parentIds); int total = dao.findOrgEmployeeByTypeCount(params); List list = Collections.emptyList(); if (total > 0) { PageUtil.pageParamConver(params, true); list = dao.findOrgEmployeeByTypeData(params); } return new Page(total, list); } /** * 通id查询个人及家人信息 */ @Override public Map findInfoByEmployeeId(Map params){ return dao.findInfoByEmployeeId(params); } @Override public List findOrgEmpIds(Map params) { //根据学校IDparentsId参数 Long cruentId = Long.parseLong(params.get("id").toString()); //Long orgId = Long.parseLong(params.get("orgId").toString()); String parentIds = orgDao.findCurentParentIds(cruentId,null); params.put("parentIds",parentIds); return dao.findOrgEmpIds(params); } /** * 查找老师和学生 */ @Override public Map findStudentAndTeachers(Map params) { Map result = new HashMap(); Object type = params.get("type"); if (type != null && !"".equals(type.toString().trim())) { String gradeId = (String)params.get("gradeId"); if (gradeId == null || "".equals((gradeId+"").trim()) || "null".equals(gradeId+"")) { params.remove("gradeId"); } if ("teachear".equals(params.get("type")) || "teacher".equals(params.get("type"))) { params.put("type","教师"); params.remove("gradeId"); params.remove("classId"); } else { params.put("type","学生"); String classId = (String)params.get("classId"); if (classId != null && !"".equals(classId+"") && !"null".equals(classId+"")) { params.remove("gradeId"); } } } List emps = dao.findStudentAndTeachers(params); result.put("emps", emps); return result; } @Override public List> findOrgEmpMap(Map params) { //根据学校IDparentsId参数 Long cruentId = null; if(params.get("id")==null||params.get("id").toString().equals("")){ cruentId = Long.parseLong(params.get("orgId").toString()); }else{ cruentId = Long.parseLong(params.get("id").toString()); } //Long orgId = Long.parseLong(params.get("orgId").toString()); String parentIds = orgDao.findCurentParentIds(cruentId,null); params.put("parentIds",parentIds); return dao.findOrgEmpMap(params); } @Override public List findStuByEmpId(Map params) { List stuList = new ArrayList<>(); stuList = dao.findStuByEmpId(params); if(stuList.size()==0){ BbEmployee bbEmployee = new BbEmployee(); bbEmployee.setRemarks("暂无任何数据!!!"); stuList.add(bbEmployee); } return stuList; } @Override public List findBbEmployeeList(Map params){ List list =dao.findData(params); return list; } @Value("${imgHttpUrl.URLSTR}") private String imgHttpUrl; @Override public Map addVisitor(BbEmployee bean) { BbEmployee isExistEmp = dao.isExistEmp(bean.getOrgId(),bean.getPhone()); Map map = new HashMap<>(); if(isExistEmp == null){ bean.preInsert(tokenService.currentUser()); if (bean.getOrgNamesJson() == null || "".equals(bean.getOrgNamesJson())) { bean.setOrgNamesJson("{}"); } if (bean.getRevJson1() == null || "".equals(bean.getRevJson1())) { bean.setRevJson1("{}"); } //提取姓名助记码 bean.setMnemonicCode(new UpperByName().toUpperByName(bean.getName())); //设置人员类型 bean.setType(EmpTypeConstant.EMP_VISITOR); //设置民族 bean.setNation("汉族"); //设置officeId 暂定直属学校 bean.setOfficeId(bean.getOrgId()); //设置组织机构沉余 String parendIds = orgDao.findCurentParentIds(bean.getOrgId(),null); List orgList = orgDao.finCurentOrgs(parendIds,bean.getOrgId()); if(orgList.size()>0){ String orgNams = orgList.get(0).toString(); if(orgList.size()>1) { for (int i = 1; i < orgList.size(); i++) { orgNams += " " + orgList.get(i).toString(); } } bean.setOrgNamesJson(orgNams); } if(bean.getPhotos()!=null&&!"".equals(bean.getPhotos())){ //根据图片路径获得人脸ID try { byte[] bytesFaces = ReadUrlImg.getImgByte(imgHttpUrl+bean.getPhotos()); //获取人脸特征 String faces = FaceUtil.extractFeature(bytesFaces,null); //人脸特征不为空时 if(faces!=null&&!faces.isEmpty()){ Integer bbFaciId = bbFaceDao.findIdByFaces(faces); if(bbFaciId == null){ BbFace bbFace = new BbFace(); bbFace.setOrgId(bean.getOrgId()); bbFace.setFeature(faces); bbFaceDao.save(bbFace); map.put("faceId",bbFace.getId()); bean.setFaceIds(bbFace.getId().toString()); }else{ map.put("faceId",bbFaciId); } } }catch (IOException e){ System.out.println(e.getMessage()); } }else{ map.put("faceId",""); } try { //bean.setPhotos("group1/M00/00/00/i-Bpa1sPoIeANA_OAACFHEvYmp0557.jpg");//临时 int isSuccess = dao.addVisitor(bean); if(isSuccess > 0){ map.put("人员ID",bean.getId()); }else { map.put("人员ID","添加数据失败!"); } }catch (Exception e){ System.out.println(e.getMessage()); map.put("错误信息","检查数据格式是否错误。"); }finally { return map; } }else{ map.put("faceId",Integer.parseInt(isExistEmp.getFaceIds())); map.put("人员ID",isExistEmp.getId()); return map; } } //教师模糊查询根据拼音 @Override public Map findTeacherByPin(Map params) { Map map = new HashMap<>(); List list = dao.findTeacherByPin(params); if(list.size()>0){ map.put("total",list.size()); map.put("data",list); }else{ map.put("message","没有查到数据"); } return map; } /** * 根据人员id查询部门 */ @Override public Map findOfficeNameById(Map params) { Map map = new HashMap(); List> list = dao.findOfficeNameById(params); if(list !=null& list.size()>0){ map = list.get(0); } return map; } @Override public List> findOrgTeaMap(Map params) { Long cruentId = Long.parseLong(params.get("orgId").toString()); //Long orgId = Long.parseLong(params.get("orgId").toString()); String parentIds = orgDao.findCurentParentIds(cruentId,null); params.put("parentIds",parentIds); return dao.findOrgTeaMap(params); } @Override public Map findEmpsByOrg(Map params) { Map map = new HashMap<>(); //前台传参是否查全部 if(params.containsKey("isAll")){ if(params.get("isAll").toString().equals("0")){ params.remove("orgId"); } } //根据学校IDparentsId参数 Long cruentId = null; if(params.get("id")==null||params.get("id").toString().equals("")){ cruentId = Long.parseLong(params.get("orgId").toString()); }else{ cruentId = Long.parseLong(params.get("id").toString()); } String parentIds = orgDao.findCurentParentIds(cruentId,null); params.put("parentIds",parentIds); Integer count = dao.findOrgEmpMapCount(params); List> data = null; if(count > 0){ data = dao.findOrgEmpMap(params); map.put("code",0); map.put("data",data); map.put("total",count); map.put("message","查询成功!"); }else{ map.put("code",1); map.put("message","查询失败!"); } return map; } @Override @Transactional public void batchAddBbEmployee(List addList) { for(BbEmployee bbEmployee:addList){ bbEmployee.preInsert(tokenService.currentUser()); dao.add(bbEmployee); } } @Override @Transactional public void batchUpdatePerson(List updateList) { for(BbEmployee bbEmployee:updateList){ if(bbEmployee.getId()!=null){ //delete 删除人脸ID Map params = new HashMap<>(); params.put("id",bbEmployee.getId()); params.put("orgId",bbEmployee.getOrgId()); bbFaceDao.deleteByUserId((String) params.get("id")); } /* bbEmployee.setUpdateBy(AppUserUtil.getLoginAppUser().getUsername()); bbEmployee.setUpdateTime(new Date());*/ bbEmployee.preUpdate(tokenService.currentUser()); bbEmployee.setDelFlag("0"); dao.updateByPhone(bbEmployee); } } @Override public BbEmployee findEmpById(Map params) { return dao.findEmpById(params); } @Override public Map findEmpAndLocationById(Map params) { Map map = new HashMap(); BbEmployee bbEmployee = dao.findEmpById(params); map.put("bbEmployee",bbEmployee); //调设备接口得到localtionList JSONObject paramMap = new JSONObject(); paramMap.put("clusterIds",bbEmployee.getDistributionIds()); String post = restTemplateUtil.post(enumStr.getClusterLocaltion(), paramMap , MediaType.APPLICATION_JSON_UTF8, true); JSONObject jsonMap = JSONObject.parseObject(post); map.put("localtionList",jsonMap.get("data")); return map; } @Override public Page findOrgEmpInVisit(Map params) { params.put("type",EmpTypeConstant.EMP_VISITOR); int total = dao.findOrgEmpInVisitCount(params); List list = Collections.emptyList(); if (total > 0) { PageUtil.pageParamConver(params, true); list = dao.findOrgEmpInVisitData(params); } return new Page<>(total, list); } //人员组织机构变更 @Override public int updateOfficeId(Map params) { params.put("delFlag", GlobalDict.IS_NOT_DEL); if(params.get("updateOfficeId")==null || params.get("updateOfficeId").toString().equals("")){ throw new IllegalArgumentException("组织机构不能为空"); } Long updateOfficeId = Long.parseLong(params.get("updateOfficeId").toString()); String parendIds = orgDao.findCurentParentIds(updateOfficeId,null); String orgNamesJson = orgDao.getParentNames(parendIds,null, " "); params.put("orgNamesJson",StringUtils.isEmpty(orgNamesJson)?"":orgNamesJson); return dao.updateOfficeId(params); } }