OrgSyncService.java 5.63 KB
Newer Older
吴泽佳's avatar
吴泽佳 committed
1 2
package com.tanpu.feo.feojob.service;

吴泽佳's avatar
吴泽佳 committed
3 4 5 6

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
7 8
import com.tanpu.feo.feojob.dao.diagnose.entity.IfaAssetsEntity;
import com.tanpu.feo.feojob.dao.user.entity.*;
吴泽佳's avatar
吴泽佳 committed
9
import com.tanpu.feo.feojob.dto.WorkDataDto;
吴泽佳's avatar
吴泽佳 committed
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
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());
            }
        }
    }

70
    public String createWechatXcxQrcode(String userId, String headImg, String qrCodeUrl) {
吴泽佳's avatar
吴泽佳 committed
71
        String url = null;
72
        long startTime = System.currentTimeMillis();
吴泽佳's avatar
吴泽佳 committed
73
        try {
74 75 76
            if (StrUtil.isBlank(headImg)) {
                headImg = wxDefaultImg;
            }
77
            String res = restTemplate.getForObject(qrCodeUrl + "?userId=" + userId + "&headimage=" + headImg + "&params=" + userId, String.class);
78
            JSONObject jsonObject = JSONUtil.parseObj(res);
吴泽佳's avatar
吴泽佳 committed
79 80 81
            String statusCode = (String) jsonObject.get("statusCode");
            if ("0000".equals(statusCode)) {
                url = (String) jsonObject.get("attributes");
82 83
            } else {
                log.error("小程序球码生成失败, userId:{}, qrCodeUrl: {}, resp: {}", userId, qrCodeUrl, jsonObject);
吴泽佳's avatar
吴泽佳 committed
84
            }
85

吴泽佳's avatar
吴泽佳 committed
86
        } catch (Exception e) {
87
            log.error("======用户:{} 生成小程序球形码失败: {}======", userId, e.getMessage());
吴泽佳's avatar
吴泽佳 committed
88
        }
89
        log.info("======用户:{} 生成小程序球形码结束 耗时: {}======", userId, System.currentTimeMillis() - startTime);
吴泽佳's avatar
吴泽佳 committed
90 91 92 93
        return url;

    }

94 95 96 97
    private String getQrCodeUrl(String urlTemplate, String miniAppId){
        return String.format(urlTemplate,miniAppId);
    }

吴泽佳's avatar
吴泽佳 committed
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
    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();
                }
            }
        }

吴泽佳's avatar
吴泽佳 committed
136

吴泽佳's avatar
吴泽佳 committed
137
    }
吴泽佳's avatar
吴泽佳 committed
138
}