From aee2c99d29a0dd3d01eb477c8bfa0f175ff4bd71 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 15 十二月 2023 14:47:47 +0800 Subject: [PATCH] 海康接口对接开发 --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java | 188 ++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 162 insertions(+), 26 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java index 7886100..7c59fe5 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java @@ -2,54 +2,54 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.config.Jwt.JwtPayLoad; import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.erp.ErpConstants; +import com.doumee.core.erp.ErpTool; +import com.doumee.core.erp.model.openapi.request.erp.*; +import com.doumee.core.erp.model.openapi.response.erp.ApproveInfoResponse; +import com.doumee.core.erp.model.openapi.response.erp.ERPApiResponse; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; -import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest; -import com.doumee.core.haikang.model.param.request.DoorsListRequest; -import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest; -import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest; -import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest; -import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest; +import com.doumee.core.haikang.model.param.BaseResponse; +import com.doumee.core.haikang.model.param.request.OrgAddRequest; +import com.doumee.core.haikang.model.param.request.OrgDelRequest; +import com.doumee.core.haikang.service.HKService; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; -import com.doumee.core.model.openapi.request.*; -import com.doumee.core.model.openapi.request.erp.OrgListRequest; -import com.doumee.core.model.openapi.request.erp.UserInfoRequest; -import com.doumee.core.model.openapi.request.erp.UserListRequest; -import com.doumee.core.model.openapi.response.*; -import com.doumee.core.model.openapi.response.erp.OrgListRespone; +import com.doumee.core.erp.model.openapi.request.*; +import com.doumee.core.erp.model.openapi.response.*; +import com.doumee.core.erp.model.openapi.response.erp.OrgListRespone; +import com.doumee.core.erp.model.openapi.response.erp.UserListRespone; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DESUtil; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.core.utils.redis.RedisUtil; -import com.doumee.dao.admin.response.MemberInfoDTO; import com.doumee.dao.business.*; import com.doumee.dao.business.join.CarEventJoinMapper; import com.doumee.dao.business.join.DeviceEventJoinMapper; import com.doumee.dao.business.join.VisitEventJoinMapper; import com.doumee.dao.business.model.*; -import com.doumee.dao.web.reqeust.CheckVisitedDTO; -import com.doumee.dao.web.response.MemberVO; -import com.doumee.service.business.*; +import com.doumee.service.business.ERPSyncService; +import com.doumee.service.business.InterfaceLogService; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import io.swagger.models.auth.In; +import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.units.qual.A; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import javax.servlet.http.HttpServletResponse; +import javax.annotation.PostConstruct; import java.util.*; import java.util.stream.Collectors; @@ -94,7 +94,7 @@ @Autowired private MemberMapper memberMapper; - + @Autowired private MemberRoleMapper memberRoleMapper; @@ -107,15 +107,145 @@ @Autowired private InterfaceLogService interfaceLogService; + + @Override + @PostConstruct + public int initHkConfig(){ + ErpConstants.approveUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_APPROVE_URL).getCode(); + ErpConstants.orgListUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_ORGLIST_URL).getCode(); + ErpConstants.userListUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_USERSTATUS_RL).getCode(); + ErpConstants.userStatusUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_USERSTATUS_RL).getCode(); + return 0; + } /** * 鍚屾ERP缁勭粐淇℃伅 * @param param * @return */ @Override + @Transactional public String syncCompany(OrgListRequest param){ - List<OrgListRespone> allList = new ArrayList<>(); + //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級 + List<OrgListRespone> list = ErpTool.getErpOrgList(ErpConstants.orgListUrl,param); + if(list !=null && list.size()>0){ + List<Company> addList = new ArrayList<>(); + List<Company> updateList = new ArrayList<>(); + List<Integer> delIds = new ArrayList<>(); + List<Company> allList = companyMapper.selectList(new QueryWrapper<Company>().lambda().eq(Company::getType,Constants.ONE)); + dealCompanyChangeList(list,addList,updateList,delIds,allList); + if(addList.size()>0){ + companyMapper.insertBatchSomeColumn(addList); + } + if(updateList.size()>0){ + for(Company c : updateList){ + companyMapper.updateById(c); + } + } + if(delIds.size()>0){ + //鍒犻櫎鎵�鏈夐渶瑕佸垹闄ょ殑缁勭粐淇℃伅(閫昏緫鍒犻櫎锛� + companyMapper.update(null,new UpdateWrapper<Company>().lambda().set(Company::getIsdeleted, Constants.ONE).in(Company::getId,delIds)); + } + return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+updateList.size()+"銆戞潯锛屽垹闄ゃ��"+delIds.size()+"銆戞潯"; + }else{ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾ERP鏁版嵁涓虹┖锛�"); + } + } + /** + * 鏍规嵁鍚屾erp鐨勭粍缁囦俊鎭皝瑁� 缁勭粐鏂板銆佷慨鏀瑰拰鍒犻櫎鐨勯泦鍚堜俊鎭� + * @param list + * @param addList + * @param updateList + * @param delIds + * @param allList + */ + private void dealCompanyChangeList(List<OrgListRespone> list, List<Company> addList, List<Company> updateList, List<Integer> delIds, List<Company> allList) { + Date date = new Date(); + for(OrgListRespone respone : list){ + //鏍规嵁erpid鏌ヨ浼佷笟淇℃伅锛屽垽鏂槸鏂板杩樻槸鏇存柊 + Company company = findCompanyByERPId(allList,respone.getId()); + if(company == null){ + //濡傛灉鏄柊澧� + if(Constants.formatIntegerNum(respone.getIsdeleted()) == Constants.ONE){ + continue; + } + //灏佽鏂板缁勭粐瀵硅薄鏁版嵁 + addList.add(getAddCompanyModel(respone,date)); + }else{ + //濡傛灉鏄洿鏂� + if(Constants.formatIntegerNum(respone.getIsdeleted()) == Constants.ONE){ + //濡傛灉宸插垹闄わ紝鍔犲叆鍒犻櫎闆嗗悎涓� + delIds.add(company.getId()); + continue; + } + updateList.add(addUpdateCompanyModel(respone,company,date)); + } + } + if(allList!=null && allList.size()>0){ + for(Company c : allList){ + if(isCompanyDeleted(c,list)){ + delIds.add(c.getId()); + } + } + } + + } + + /** + * 鏂板缁勭粐瀵硅薄 + * @param respone + * @param company + * @param date + * @return + */ + private Company addUpdateCompanyModel(OrgListRespone respone,Company company,Date date) { + company.setName(respone.getName()); + company.setErpId(respone.getId()); + company.setEditDate(date); + company.setStatus(respone.getStatus()); + company.setCode(respone.getCode()); + company.setErpParentId(respone.getParentOrgId()); + company.setErpDate(date); + company.setHkStatus(Constants.ZERO); + return company; + } + /** + * 鏇存柊缁勭粐瀵硅薄 + * @param respone + * @param date + * @return + */ + private Company getAddCompanyModel(OrgListRespone respone, Date date) { + Company company = new Company(); + company.setIsdeleted(Constants.ZERO); + company.setName(respone.getName()); + company.setErpId(respone.getId()); + company.setCreateDate(date); + company.setCode(respone.getCode()); + company.setErpParentId(respone.getParentOrgId()); + company.setErpDate(date); + //娴峰悍鏁版嵁 + company.setHkId(HKConstants.RES_INDEX+UUID.randomUUID().toString()); + return company; + } + + private boolean isCompanyDeleted(Company c, List<OrgListRespone> list) { + for(OrgListRespone m : list){ + if(StringUtils.equals(c.getErpId(),m.getId())){ + return true; + } + } + return false; + } + + private Company findCompanyByERPId(List<Company> allList, String id) { + if(allList!=null){ + for(Company com :allList){ + if(StringUtils.equals(com.getErpId(),id)){ + return com; + } + } + } return null; } @@ -126,19 +256,25 @@ */ @Override public String syncUsers(UserListRequest param){ + //TODO----------------RK------------------ + List<UserListRespone> allList = ErpTool.getErpUserList(ErpConstants.userListUrl,param); return null; } + /** - * 鑾峰彇ERP浜哄憳淇℃伅 + * 鎻愪氦鐢ㄦ埛鍚屾澶辫触璁板綍 * @param param * @return */ @Override - public String syncUserInfo(UserInfoRequest param){ - return null; + public boolean noticeUserFail(UserFailRequest param){ + ERPApiResponse r = ErpTool.noticeUserStatus(ErpConstants.userStatusUrl,param); + if(r!=null && r.isSuccess()){ + return true; + } + return false; } - @Override public AccessTokenResponse createERPToken(String accessKey, String accessSecret){ -- Gitblit v1.9.3