From bdbb62001dc4c3c63198270269795e54235c0e40 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 21 十二月 2023 15:34:14 +0800
Subject: [PATCH] 海康接口对接开发

---
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java |  249 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 190 insertions(+), 59 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 6f4a268..8635604 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,6 +4,7 @@
 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.UserUpdateRequest;
 import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
@@ -15,13 +16,9 @@
 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.*;
 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.dao.business.model.*;
 import com.doumee.service.business.ERPSyncService;
 import com.github.yulichang.query.MPJQueryWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -30,6 +27,7 @@
 import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -47,9 +45,15 @@
     @Autowired
     private CompanyMapper companyMapper;
     @Autowired
+    private MemberRoleMapper memberRoleMapper;
+    @Autowired
+    private EmpowerMapper empowerMapper;
+    @Autowired
     private MemberMapper memberMapper;
     @Autowired
     private ERPSyncService erpSyncService;
+    @Autowired
+    private DeviceMapper deviceMapper;
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
@@ -224,47 +228,132 @@
             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());
-                }
+                dealMemberInfoBiz(c,date,path) ;
             }
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             Constants.DEALING_HK_USER =false;
         }
+    }
+
+    @Transactional
+    private boolean dealMemberInfoBiz(Member c, Date date, String path) {
+        if( c.getCompanyId() == null){
+            //濡傛灉娌℃湁缁勭粐涓嶅仛澶勭悊
+            return  false;
+        }
+        if(StringUtils.isBlank(c.getHkId())){
+            //濡傛灉鏂板鍚屾鏁告摎
+            dealUserHkAddBiz(c,date,path);
+        }else{
+            //濡傛灉涔嬪墠宸茬粡鍜屾捣搴峰悓姝ワ紝鍒欐洿鏂扮敤鎴锋暟鎹互鍙婁汉鑴告暟鎹紙鍙兘鏂板浜鸿劯 涔熷彲鑳芥洿鏂颁汉鑴革級
+            dealUserHkEditBiz(c,date,path);
+        }
+        return  false;
+    }
+
+    /**
+     *  濡傛灉涔嬪墠宸茬粡鍜屾捣搴峰悓姝ワ紝鍒欐洿鏂扮敤鎴锋暟鎹互鍙婁汉鑴告暟鎹紙鍙兘鏂板浜鸿劯 涔熷彲鑳芥洿鏂颁汉鑴革級
+     * @param c
+     * @param date
+     * @param path
+     */
+    private void dealUserHkEditBiz(Member c, Date date, String path) {
+        c.setHkStatus(Constants.ONE);
+        if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){
+            //澶勭悊鍒犻櫎鏁版嵁锛堝垹闄や箣鍓嶄笅鍙戠殑娴峰悍浜哄憳淇℃伅锛�
+            boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date);
+            c.setHkStatus(r?Constants.ONE:Constants.TWO);
+            c.setRemark(r?null:"鍒犻櫎娴峰悍浜哄憳淇℃伅澶辫触锛�");
+        }else{
+            //澶勭悊淇敼鏁版嵁锛屽苟涓旀洿鏂颁汉鑴�
+            UserAddRequest  addHkModel = getUserAddModel(c,path,1);//淇敼
+            //澶勭悊鏂板鏁版嵁
+            BaseResponse result =  HKService.editUser(addHkModel);
+            if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
+                if(StringUtils.isNotBlank(c.getFaceImg())){
+                    //濡傛灉鏈変汉鑴哥収鐗囷紝澶勭悊浜鸿劯鐓х墖鍚屾
+                    String faceid = dealMemberFace(c,path);
+                    if(StringUtils.isBlank(faceid)){
+                        noticeErpFail(c,Constants.ZERO,"浜鸿劯淇℃伅鏇存柊澶辫触锛岃妫�鏌ヤ汉鑴哥収鐗囨槸鍚﹀悎娉曪紒");
+                        c.setHkStatus(Constants.TWO);
+                        c.setRemark("浜鸿劯淇℃伅鏇存柊澶辫触锛岃妫�鏌ヤ汉鑴哥収鐗囨槸鍚﹀悎娉曪紒锛�");
+                    }else{
+                        c.setFaceId(faceid);
+                    }
+                }
+            }else{
+                noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+result.getCode()+result.getMsg());
+                c.setHkStatus(Constants.TWO);
+                c.setRemark("浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴鏇存柊澶辫触锛岃淇鍚庨噸璇曪紒锛�");
+            }
+
+        }
+        c.setHkDate(date);
+        memberMapper.updateById(c);
+    }
+
+    /**
+     * 鏂扮敤鎴峰悓姝ュ埌娴峰悍骞冲彴
+     * @param c
+     * @param date
+     * @param path
+     * @return
+     */
+    private boolean dealUserHkAddBiz(Member c, Date date, String path) {
+        if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){
+            //鍒犻櫎鐨勭粍缁囷紝涓嶅仛澶勭悊,娴峰悍鐘舵�佹洿鏂颁负涓嶅鐞嗭紝涓嬫涓嶅啀澶勭悊杩欎釜璁板綍
+            c.setHkStatus(Constants.TWO);
+            c.setRemark("鏈悓姝ユ暟鎹紝鐩存帴鍒犻櫎");
+            memberMapper.updateById(c);
+            return  false;
+        }
+        UserAddRequest addHkModel = getUserAddModel(c,path,0);//鏂板
+        if(addHkModel == null){
+            //濡傛灉浜鸿劯鏁版嵁涓嶆纭紝涓嬭浇澶辫触绛夊師鍥�
+            noticeErpFail(c,Constants.ZERO,"浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�");
+            c.setHkStatus(Constants.TWO);
+            c.setRemark("浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�");
+            memberMapper.updateById(c);
+            return  false;
+        }
+        //澶勭悊鏂板鏁版嵁
+        BaseResponse<UserAddResponse> result =  HKService.addUser(addHkModel);
+        if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
+            c.setFaceId(result.getData().getFaceId());
+            c.setHkStatus(Constants.ONE);
+            c.setHkId(addHkModel.getPersonId());
+            memberMapper.updateById(c);
+            return  true;
+        }else{
+            noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+result.getCode()+result.getMsg());
+            c.setHkStatus(Constants.TWO);
+            c.setRemark("浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒");
+            memberMapper.updateById(c);
+            return  false;
+        }
+    }
+
+    /**
+     * 澶勭悊鏂板鎴栬�呬慨鏀逛汉鑴镐俊鎭�
+     * @param c
+     * @param path
+     * @return
+     */
+    private String dealMemberFace(Member c,String path) {
+        if(StringUtils.isBlank(c.getFaceId())){
+            BaseResponse<FaceAddOrEditesponse> response = HKService.addFace(getFaceAddModel(c,path));
+            if(StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)&& response.getData()!=null ){
+                return  response.getData().getFaceId();
+            }
+        }else{
+            BaseResponse response = HKService.editFace(getFaceUpdateModel(c,path));
+            if(StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) ){
+                return  c.getFaceId();
+            }
+        }
+        return null;
     }
 
     /**
@@ -287,53 +376,95 @@
      * @param id
      * @param date
      */
-    private void doHkDeleteUser(Integer  id,String delHkIds,  Date date) {
+    private boolean doHkDeleteUser(Integer  id,String delHkIds,  Date date ) {
         if(StringUtils.isBlank(delHkIds)){
-            return;
+            return false;
         }
         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());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚�
-                    }
-                }}*/
+                memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+                        .set(Member::getHkStatus,Constants.TWO)//鍚屾澶辫触
+                        .set(Member::getHkDate,date)
+                        .in(Member::getId, id));
             }else{
                 //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
-                companyMapper.update(null,new UpdateWrapper<Company>().lambda()
-                        .set(Company::getHkStatus,Constants.ONE)
-                        .set(Company::getHkDate,date)
-                        .in(Company::getId, id));
+                memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+                        .set(Member::getHkStatus,Constants.ONE)//鍚屾鎴愬姛
+                        .set(Member::getHkDate,date)
+                        .in(Member::getId, id));
             }
+            return true;
         }
+        return false;
     }
 
-    private UserAddRequest getUserAddModel(Member c,String path) {
+    /**
+     * 鍒犻櫎浜哄憳鎵�鏈夎澶囦笂鐨勬潈闄愪俊鎭�
+     * @param userId
+     * @param allDevice
+     */
+    private void delUserHkRolle(String userId,List<Device> allDevice) {
+        //鍒涘缓浠诲姟
+        String taskId = hkTaskAddtion();
+        //
+       if(taskId!=null){
+           //鍒犻櫎鎵�鏈夎澶囦笂鐨勬潈闄�
+           addTaskDataAllDel(userId,taskId,allDevice);
+           startTask(taskId);
+       }
+    }
+
+    private UserAddRequest getUserAddModel(Member c,String path,int type) {
         UserAddRequest model = new UserAddRequest();
         model.setOrgIndexCode(c.getCompanyHkId());
-        model.setPersonId(HKConstants.RES_USER_INDEX+UUID.randomUUID().toString().replace("-", ""));
+        model.setPersonId(type == 0 ?HKConstants.RES_USER_INDEX+UUID.randomUUID().toString().replace("-", ""):c.getHkId());
         model.setGender(Constants.formatIntegerNum(c.getSex())+"");
         model.setPersonName(c.getName());
-        if(StringUtils.isNotBlank(c.getFaceImg())){
+        if(type== 0 && StringUtils.isNotBlank(c.getFaceImg())){
             model.setFaces(new ArrayList<>());
             UserAddFaceRequest face = new UserAddFaceRequest();
             String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg());
-            if(face.getFaceData() == null){
+            if(imageBase== null){
                 //浜鸿劯鏁版嵁涓嶆纭紝
                 return  null;
             }
+            face.setFaceData(imageBase);
             model.getFaces().add(face);
 
         }
         return  model;
-
     }
-
+    private FaceAddRequest getFaceAddModel(Member c,String path) {
+        FaceAddRequest model = new FaceAddRequest();
+        model.setPersonId(c.getHkId());
+        if(StringUtils.isNotBlank(c.getFaceImg())){
+            String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg());
+            if(imageBase == null){
+                //浜鸿劯鏁版嵁涓嶆纭紝
+                return  null;
+            }
+            model.setFaceData(imageBase);
+        }
+        return  model;
+    }
+    private FaceEditRequest getFaceUpdateModel(Member c,String path) {
+        FaceEditRequest model = new FaceEditRequest();
+        model.setFaceId(c.getFaceId());
+        if(StringUtils.isNotBlank(c.getFaceImg())){
+            String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg());
+            if(imageBase == null){
+                //浜鸿劯鏁版嵁涓嶆纭紝
+                return  null;
+            }
+            model.setFaceData(imageBase);
+        }
+        return  model;
+    }
 
 }

--
Gitblit v1.9.3