doum
2025-09-11 7298d5354963a88643a543b51b90192dc9fc934c
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -1,6 +1,5 @@
package com.doumee.service.business.impl.hksync.ferp;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
@@ -11,20 +10,23 @@
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.ImageBase64Util;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.dao.MemberMapper;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.ext.ERPSyncService;
import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -64,16 +66,72 @@
    @Autowired
    private ERPSyncService erpSyncService;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private DataSyncConfig dataSyncConfig;
    /**
     *  绑定海康用户openId
     *  {
     * "openId" : "ovmre6R7w-vEQCHg52-UN2mV_abI",
     * "userName" : "13856591439",
     * "appKey" : "wx173e6caf5abc718a",
     * "oaId" : "atwl",
     * "platformName" : "安泰物流园区",
     *
     * }
     */
    @Override
    public    String syncHkUserOpenid(Integer id){
        SystemUser user = systemUserMapper.selectById(id);
        if(user == null ||StringUtils.isBlank(user.getOpenid()) ||Constants.equalsInteger(user.getOpenidHkStatus(),Constants.ONE)){
            return null;
        }
        UserOpenidSaveRequest request = new UserOpenidSaveRequest();
        request.setUserName(user.getUsername());
        request.setAppKey(systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_APPID).getCode());
        request.setOaId("atwl");
        request.setOpenId(user.getOpenid());
        request.setPlatformName(user.getRealname());
        BaseResponse<Integer>  response = HKService.userOpenidSave(request);
        if(response!=null &&response.getCode().equals(HKConstants.RESPONSE_SUCCEE) && Constants.equalsInteger(response.getData(),Constants.ONE)){
            user.setOpenidHkStatus(Constants.ONE);
            user.setOpenidHkInfo("绑定成功");
        }else{
            user.setOpenidHkStatus(Constants.TWO);
            user.setOpenidHkInfo(response!=null?StringUtils.defaultString(response.getMsg(),"【未知失败原因】"):"绑定失败");
        }
        user.setOpenidHkDate(new Date());
        systemUserMapper.updateById(user);
        return  "成功";
    }
    @Override
    public    String delHkUserOpenid(UserOpenidSaveRequest param){
        UserOpenidSaveRequest request = new UserOpenidSaveRequest();
        request.setUserName(param.getUserName());
        request.setAppKey(systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_APPID).getCode());
        BaseResponse response = HKService.userOpenidDel(request);
        if(response!=null &&response.getCode().equals(HKConstants.RESPONSE_SUCCEE)){
        }
        request.setUserName(null);
        request.setOpenId(param.getOpenId());
        request.setAppKey(systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_APPID).getCode());
        response = HKService.userOpenidDel(request);
        if(response!=null &&response.getCode().equals(HKConstants.RESPONSE_SUCCEE)){
        }
        return  "成功";
    }
    /**
     * 同步海康组织信息,根据erp同步组织结果,定时检查需要下发到海康的组织信息
     */
    @Override
    public   void syncOrgData(LoginUserInfo user){
        if(Constants.DEALING_HK_ORG || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){
        if(Constants.DEALING_HK_ORG ||
                !(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp
                        || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.self)){
            return   ;
        }
        Constants.DEALING_HK_ORG =true;
@@ -149,7 +207,7 @@
        if(addList!=null &&addList.size()>0){
            //处理新增
            BaseResponse<OrgOrUserAddResponse> result =  HKService.addBatchOrg(addList);
            if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
            if(result !=null && StringUtils.equals(result.getCode(), HKConstants.RESPONSE_SUCCEE)){
                OrgOrUserAddResponse data = result.getData();
                if(data.getSuccesses()!=null && data.getSuccesses().size()>0){
                    //处理新增成功的数据,修改海康同步状态
@@ -263,7 +321,9 @@
     */
    @Override
    public   void syncUserData(LoginUserInfo user){
        if(Constants.DEALING_HK_USER  || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){
        if(Constants.DEALING_HK_USER  ||
                !(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp
                || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.self)){
            return   ;
        }
        Constants.DEALING_HK_USER =true;
@@ -283,7 +343,7 @@
                return;
            }
            Date date = new Date();
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
            for(Member c : list){
                dealMemberInfoBiz(c,date,path) ;
@@ -300,7 +360,8 @@
     */
    @Override
    public   void syncMemberDelData(){
        if(Constants.DEALING_HK_DEL_USER  || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){
        if(Constants.DEALING_HK_DEL_USER
                || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin())== DataSyncConfig.origin.hk){
            return   ;
        }
        Constants.DEALING_HK_DEL_USER =true;
@@ -359,14 +420,16 @@
        }
        Date date = new Date();
        for(Member member : list){
            //一卡通授权下发状态 0待下发 1已下发 2下发成功   3已取消 4下发失败 5任务下载已结束
            if(member!=null && Constants.equalsInteger(member.getIsdeleted(),Constants.ONE) ){
                if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
                        .eq(Empower::getMemberId, member.getId())
                        .eq(Empower::getIsdeleted,Constants.ONE)
                        .ne(Empower::getFailFlag,Constants.ONE)
                        .ne(Empower::getSendStatus,Constants.EmpowerStatus.pass)) ==0) {
                    //如果权限都已经删除成功,则删除海康人员和卡片数据
                        .notIn(Empower::getSendStatus
                                ,Constants.EmpowerStatus.pass
                                ,Constants.EmpowerStatus.cancel )) ==0) {
                    //如果权限都已经删除成功,则删除海康人员和卡片数
                    HkSyncEmpowerServiceImpl.doHkDeleteUser(member.getId(),member.getHkId(),date,memberMapper1,memberCardMapper);
                }
            }
@@ -393,12 +456,11 @@
                        for(String s :ss){
                            try {
                                Integer ts =Integer.parseInt(s);
                                 r.add(ts);
                                r.add(ts);
                            }catch (Exception e){
                                //脏数据不处理
                            }
                        }
                    }
                }
                return  r;
@@ -476,9 +538,8 @@
            //如果没有卡 也没有人脸
            return;
        }
        if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO)){
//                && Constants.equalsInteger(member.getHkStatus(),Constants.ONE)){
                // && Constants.equalsInteger(member.getHkStatus(),Constants.ONE)){
            List<Integer> deviceIds =new ArrayList<>();//新设备编码集合
            List<Empower> list = new ArrayList<>();//新授权记录集合
            //如果用户是同步海康成功,添加带下发权限(只管理新增或者编辑的)
@@ -617,7 +678,6 @@
            cr.setCardType(m.getType());
            param.getCardList().add(cr);
        }
        //处理新增数据
        BaseResponse<List<CardInfoResponse>> result =  HKService.cardBingding(param);
        if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){
@@ -653,7 +713,7 @@
    public static   List<MemberCard> getNormalCardList(Member member,MemberCardMapper memberCardMapper) {
       return memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda()
                .eq(MemberCard::getMemberId,member.getId())
//                .eq(MemberCard::getType,Constants.TWO)
                // .eq(MemberCard::getType,Constants.TWO)
                .eq(MemberCard::getStatus,Constants.MemberCard.normal)
                .eq(MemberCard::getHkStatus,Constants.ONE)  );
@@ -688,7 +748,7 @@
            //处理新增数据
            BaseResponse result =  HKService.editUser(addHkModel);
            if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){
                if(StringUtils.isNotBlank(c.getFaceImg()) && Constants.equalsInteger(c.getFaceStatus(),Constants.ZERO)){
                if(StringUtils.isNotBlank(c.getFaceImg()) && !Constants.equalsInteger(c.getFaceStatus(),Constants.TWO)){
                    //如果有人脸照片,处理人脸照片同步
                    String faceid = dealMemberFace(c,path);
                    if(StringUtils.isBlank(faceid)){