package com.tanpu.feo.feojob.service; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.tanpu.feo.feojob.dao.diagnose.entity.IfaAssetsEntity; import com.tanpu.feo.feojob.dao.user.entity.*; import com.tanpu.feo.feojob.dto.WorkDataDto; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.util.Iterator; import java.util.List; import java.util.Map; @Service @Slf4j public class OrgSyncService { @Resource private OrgSyncByWxcpService orgSyncByWxcpService; @Resource private IfaAssetsService ifaAssetsService; @Resource private EmployeeRoleService employeeRoleService; @Resource private RoleService roleService; @Value("${wx.xcxqrcode}") String qrcodeurl; @Value("${user.wxDefaultImg}") String wxDefaultImg; @Resource private RestTemplate restTemplate; public void updateData(String orgId, WorkDataDto<UserInfoEntity> workUserInfo, WorkDataDto<EmployeeEntity> workEmployee, WorkDataDto<DepartmentEntity> workDepartment, WorkDataDto<DepartmentEmployeeEntity> workDepartmentEmployee, WorkDataDto<EmployeeRoleEntity> workEmployeeRole) { //1 删除列表中 管理员 用户信息 log.info("=======开始 删除管理员用户信息======"); deleteAdmin(orgId, workUserInfo, workEmployee, workEmployeeRole); log.info("=======结束 删除管理员用户信息======"); log.info("==========workUserInfo=========="); log.info(JSONUtil.toJsonStr(workUserInfo)); log.info("==========workEmployee=========="); log.info(JSONUtil.toJsonStr(workEmployee)); log.info("==========workDepartment==========="); log.info(JSONUtil.toJsonStr(workDepartment)); log.info("==========workDepartmentEmployee========="); log.info(JSONUtil.toJsonStr(workDepartmentEmployee)); log.info("==========workEmployeeRole========="); log.info(JSONUtil.toJsonStr(workEmployeeRole)); log.info("=================================="); //2 执行 增删改 List<IfaAssetsEntity> execute = orgSyncByWxcpService.execute(workUserInfo, workEmployee, workDepartment, workDepartmentEmployee, workEmployeeRole); for (IfaAssetsEntity ifaAssets : execute) { try { ifaAssetsService.insertIfaAssets(ifaAssets); } catch (Exception e) { log.info("======往ifaAssets写数据错误->用户ID:{} -> 错误信息-> {}======", ifaAssets.getIfaId(), e.getMessage()); } } } public String createWechatXcxQrcode(String userId, String headImg, String qrCodeUrl) { String url = null; long startTime = System.currentTimeMillis(); try { if (StrUtil.isBlank(headImg)) { headImg = wxDefaultImg; } String res = restTemplate.getForObject(qrCodeUrl + "?userId=" + userId + "&headimage=" + headImg + "¶ms=" + userId, String.class); JSONObject jsonObject = JSONUtil.parseObj(res); String statusCode = (String) jsonObject.get("statusCode"); if ("0000".equals(statusCode)) { url = (String) jsonObject.get("attributes"); } else { log.error("小程序球码生成失败, userId:{}, qrCodeUrl: {}, resp: {}", userId, qrCodeUrl, jsonObject); } } catch (Exception e) { log.error("======用户:{} 生成小程序球形码失败: {}======", userId, e.getMessage()); } log.info("======用户:{} 生成小程序球形码结束 耗时: {}======", userId, System.currentTimeMillis() - startTime); return url; } private String getQrCodeUrl(String urlTemplate, String miniAppId){ return String.format(urlTemplate,miniAppId); } private void deleteAdmin(String orgId, WorkDataDto<UserInfoEntity> workUserInfo, WorkDataDto<EmployeeEntity> workEmployee, WorkDataDto<EmployeeRoleEntity> workEmployeeRole) { // 获取 role Map<String, String> roleMap = roleService.findInfoNoAdmin(); // 获取 admin 的员工id List<String> employeeIdList = employeeRoleService.findInfoByOrgIdAndAdmin(orgId, roleMap.get("m")); List<UserInfoEntity> deleteList1 = workUserInfo.getDeleteList(); Iterator<UserInfoEntity> iterator1 = deleteList1.iterator(); while (iterator1.hasNext()) { UserInfoEntity userInfo = iterator1.next(); for (String s : employeeIdList) { if (s.equals(userInfo.getId())) { iterator1.remove(); } } } List<EmployeeEntity> deleteList2 = workEmployee.getDeleteList(); Iterator<EmployeeEntity> iterator2 = deleteList2.iterator(); while (iterator2.hasNext()) { EmployeeEntity employee = iterator2.next(); for (String s : employeeIdList) { if (s.equals(employee.getEmployeeId())) { iterator2.remove(); } } } List<EmployeeRoleEntity> deleteList3 = workEmployeeRole.getDeleteList(); Iterator<EmployeeRoleEntity> iterator3 = deleteList3.iterator(); while (iterator3.hasNext()) { EmployeeRoleEntity employeeRole = iterator3.next(); for (String s : employeeIdList) { if (s.equals(employeeRole.getEmployeeId())) { iterator3.remove(); } } } } }