|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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.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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @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(){ | 
|---|
|  |  |  | if(Constants.DEALING_HK_ORG || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){ | 
|---|
|  |  |  | public   void syncOrgData(LoginUserInfo user){ | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | //处理新增成功的数据,修改海康同步状态 | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public   void syncUserData(){ | 
|---|
|  |  |  | if(Constants.DEALING_HK_USER  || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){ | 
|---|
|  |  |  | public   void syncUserData(LoginUserInfo user){ | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) ; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO)){ | 
|---|
|  |  |  | //                && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){ | 
|---|
|  |  |  | //                && Constants.equalsInteger(member.getHkStatus(),Constants.ONE)){ | 
|---|
|  |  |  | List<Integer> deviceIds =new ArrayList<>();//新设备编码集合 | 
|---|
|  |  |  | List<Empower> list = new ArrayList<>();//新授权记录集合 | 
|---|
|  |  |  | //如果用户是同步海康成功,添加带下发权限(只管理新增或者编辑的) | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(Empower::getMemberId,member.getId()) | 
|---|
|  |  |  | .eq(Empower::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .in(Empower::getDeviceId,deviceIds) ); | 
|---|
|  |  |  | empowerMapper.insertBatchSomeColumn(list); | 
|---|
|  |  |  | empowerMapper.insert(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | List<Integer> deviceIds =new ArrayList<>();//新设备编码集合 | 
|---|
|  |  |  | List<Empower> list = new ArrayList<>();//新授权记录集合 | 
|---|
|  |  |  | if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO) | 
|---|
|  |  |  | && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){ | 
|---|
|  |  |  | && Constants.equalsInteger(member.getHkStatus(),Constants.ONE)){ | 
|---|
|  |  |  | //如果用户是同步海康成功,添加带下发权限(只管理新增或者编辑的) | 
|---|
|  |  |  | List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,addDoorIds)); | 
|---|
|  |  |  | if(deviceList == null || deviceList.size() == 0){ | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(Empower::getMemberId,member.getId()) | 
|---|
|  |  |  | .eq(Empower::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .in(Empower::getDeviceId,deviceIds) ); | 
|---|
|  |  |  | empowerMapper.insertBatchSomeColumn(list); | 
|---|
|  |  |  | empowerMapper.insert(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | //处理新增数据 | 
|---|
|  |  |  | 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)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | model.setOrgIndexCode(c.getHkOrgId()); | 
|---|
|  |  |  | model.setJobNo(c.getCode()); | 
|---|
|  |  |  | model.setPhoneNo(c.getPhone()); | 
|---|
|  |  |  | model.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo())); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(c.getIdcardNo())){ | 
|---|
|  |  |  | model.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | model.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+""); | 
|---|
|  |  |  | model.setPersonId(type == 0 ?UUID.randomUUID().toString().replace("-", ""):c.getHkId()); | 
|---|
|  |  |  | model.setGender(Constants.formatIntegerNum(c.getSex())+""); | 
|---|
|  |  |  | model.setPersonName(c.getName()); | 
|---|
|  |  |  | if(type== 0 && StringUtils.isNotBlank(c.getFaceImg())){ | 
|---|
|  |  |  | if(StringUtils.isNotBlank(c.getFaceImg())){ | 
|---|
|  |  |  | model.setFaces(new ArrayList<>()); | 
|---|
|  |  |  | UserAddFaceRequest face = new UserAddFaceRequest(); | 
|---|
|  |  |  | String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); | 
|---|