From c18b8f0f12f9c3965fee72ea2ae668c2fc89d908 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 18 十二月 2023 17:24:58 +0800 Subject: [PATCH] 海康接口对接开发 --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 155 insertions(+), 17 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java index 9aea7de..6f4a268 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java @@ -4,26 +4,28 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; +import com.doumee.core.haikang.model.HKTools; 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.model.param.request.ParkListRequest; -import com.doumee.core.haikang.model.param.respose.OrgOrUserAddResponse; -import com.doumee.core.haikang.model.param.respose.OrgOrUserAddSuccessResponse; -import com.doumee.core.haikang.model.param.respose.OrgUpdateFailureResponse; -import com.doumee.core.haikang.model.param.respose.ParkListResponse; +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.utils.Constants; import com.doumee.core.utils.DateUtil; +import com.doumee.core.utils.ImageBase64Util; import com.doumee.dao.business.CompanyMapper; +import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.ParksMapper; import com.doumee.dao.business.join.CompanyJoinMapper; import com.doumee.dao.business.model.Company; +import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.Parks; +import com.doumee.service.business.ERPSyncService; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; @@ -35,21 +37,24 @@ import java.util.UUID; /** - * 娴峰悍鍋滆溅搴撳悓姝ervice瀹炵幇 + * 娴峰悍缁勭粐浜哄憳閫氳繃姝ervice瀹炵幇 * @author 姹熻箘韫� * @date 2023/11/30 15:33 */ @Service +@Slf4j public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl { - @Autowired private CompanyMapper companyMapper; + @Autowired + private MemberMapper memberMapper; + @Autowired + private ERPSyncService erpSyncService; @Autowired private SystemDictDataBiz systemDictDataBiz; /** - * 鍚屾娴峰悍缁勭粐淇℃伅 - * @return + * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭� */ @Override public void syncOrgData(){ @@ -64,7 +69,7 @@ .select("*,(select b.hk_id from company b where company.erp_parent_id = b.id limit 1) as hkParentId") .lambda() .eq(Company::getHkStatus,Constants.ZERO) - .orderByDesc(Company::getErpDate)); + .orderByAsc(Company::getErpDate)); if(list ==null || list.size()==0){ return; } @@ -124,6 +129,7 @@ */ private void doHkAddOrg(List<Company> updateList, List<OrgAddRequest> addList) { Date date = new Date(); + BaseResponse<OrgOrUserAddResponse> result = HKService.addBatchOrg(addList); if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ OrgOrUserAddResponse data = result.getData(); @@ -156,10 +162,10 @@ private OrgAddRequest getOrgAddModel(Company c,String rootOrgId) { OrgAddRequest model = new OrgAddRequest(); - model.setOrgIndexCode(HKConstants.RES_INDEX+UUID.randomUUID().toString()); + model.setOrgIndexCode(HKConstants.RES_ORG_INDEX+UUID.randomUUID().toString().replace("-","")); model.setOrgName(c.getName()); - model.setOrgCode(c.getCode()); - model.setOrgIndexCode(c.getHkParentId()); +// model.setOrgCode(c.getCode()); + model.setParentIndexCode(c.getHkParentId()); return model; } @@ -170,14 +176,20 @@ * @param date */ private void doHkDeleteOrg(List<Integer> delIds,List<String> delHkIds, Date date) { + if(delHkIds.size() == 0){ + return; + } OrgDelRequest request = new OrgDelRequest(); - request.setIndexCodes((String[]) delHkIds.toArray()); + request.setIndexCodes( delHkIds.toArray(new String[]{})); BaseResponse<List<OrgUpdateFailureResponse>> result = HKService.delBatchOrg(request); if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ List<String> fIds = new ArrayList<>(); if(result.getData()!=null){ for(OrgUpdateFailureResponse r : result.getData()){ - fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚� + if(!r.getCode().equals("0x00072001")){ + //涓嶅瓨鍦ㄧ殑涔熺畻鍒犻櫎鎴愬姛 + fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚� + } } } //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛� @@ -195,7 +207,133 @@ */ @Override public void syncUserData(){ + if(Constants.DEALING_HK_USER){ + return ; + } + Constants.DEALING_HK_USER =true; + try { + //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁 + List<Member> list = memberMapper.selectList(new QueryWrapper<Member>() + .lambda() + .eq(Member::getHkStatus,Constants.ZERO) + .orderByAsc(Member::getErpDate)); + if(list ==null || list.size()==0){ + return; + } + Date date = new Date(); + String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); + for(Member c : list){ + if( c.getCompanyId() == null){ + //濡傛灉娌℃湁缁勭粐涓嶅仛澶勭悊 + continue; + } + UserAddRequest addHkModel = new UserAddRequest(); + if(StringUtils.isBlank(c.getHkId())){ + //濡傛灉鏂板鍚屾鏁告摎 + if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ + //鍒犻櫎鐨勭粍缁囷紝涓嶅仛澶勭悊,娴峰悍鐘舵�佹洿鏂颁负涓嶅鐞嗭紝涓嬫涓嶅啀澶勭悊杩欎釜璁板綍 + c.setHkStatus(Constants.TWO); + memberMapper.updateById(c); + continue ; + } + addHkModel = getUserAddModel(c,path); + c.setHkId(addHkModel.getPersonId()); + }else{ + //鍒犻櫎娴峰悍鍘熸湁鐨勬暟鎹紝鍐嶆柊澧炵粍缁� + addHkModel = getUserAddModel(c,path); + c.setHkId(addHkModel.getPersonId()); + } + if(addHkModel == null){ + //濡傛灉浜鸿劯鏁版嵁涓嶆纭紝涓嬭浇澶辫触绛夊師鍥� + noticeErpFail(c,Constants.ZERO,"浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�"); + continue; + } + //澶勭悊鍒犻櫎鏁版嵁锛堝垹闄や箣鍓嶄笅鍙戠殑娴峰悍浜哄憳淇℃伅锛岀劧鍚庢柊澧烇級 + doHkDeleteUser(c.getId(),c.getHkId(),date); + //澶勭悊鏂板鏁版嵁 + BaseResponse<UserAddResponse> result = HKService.addUser(addHkModel); + if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ + c.setFaceId(result.getData().getFaceId()); + memberMapper.updateById(c); + }else{ + noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+result.getCode()+result.getMsg()); + } + } + }catch (Exception e){ + e.printStackTrace(); + }finally { + Constants.DEALING_HK_USER =false; + } + } + + /** + * 閫氱煡erp绯荤粺锛屼汉鍛樹笅鍙戝悓姝ヤ俊鎭姸鎬佸け璐� + * @param c + * @param type + * @param s + */ + private void noticeErpFail(Member c, int type, String s) { + UserFailRequest r = new UserFailRequest(); + r.setUserId(c.getErpId()); + r.setInfo(s); + r.setType(type); + //閫氱煡ERP浜鸿劯鏁版嵁涓嶆纭� + erpSyncService.noticeUserFail(r); + } + + /** + * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭� + * @param id + * @param date + */ + private void doHkDeleteUser(Integer id,String delHkIds, Date date) { + if(StringUtils.isBlank(delHkIds)){ + return; + } + UserDelRequest request = new UserDelRequest(); + request.setPersonIds(new String[]{delHkIds}); + BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); + if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + List<String> fIds = new ArrayList<>(); + if(result.getData()!=null && result.getData().size()>0){ + log.info("娴峰悍鍒犻櫎鐢ㄦ埛澶辫触锛�==============="+result.getData().get(0).getPersonId()); + /* for(UserDelResponse r : result.getData()){ + if(!r.getCode().equals("0x00072001")){ + //涓嶅瓨鍦ㄧ殑涔熺畻鍒犻櫎鎴愬姛 + fIds.add(r.getPersonId());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚� + } + }}*/ + }else{ + //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛� + companyMapper.update(null,new UpdateWrapper<Company>().lambda() + .set(Company::getHkStatus,Constants.ONE) + .set(Company::getHkDate,date) + .in(Company::getId, id)); + } + } + } + + private UserAddRequest getUserAddModel(Member c,String path) { + UserAddRequest model = new UserAddRequest(); + model.setOrgIndexCode(c.getCompanyHkId()); + model.setPersonId(HKConstants.RES_USER_INDEX+UUID.randomUUID().toString().replace("-", "")); + model.setGender(Constants.formatIntegerNum(c.getSex())+""); + model.setPersonName(c.getName()); + if(StringUtils.isNotBlank(c.getFaceImg())){ + model.setFaces(new ArrayList<>()); + UserAddFaceRequest face = new UserAddFaceRequest(); + String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); + if(face.getFaceData() == null){ + //浜鸿劯鏁版嵁涓嶆纭紝 + return null; + } + model.getFaces().add(face); + + } + return model; } + } -- Gitblit v1.9.3