jiangping
2024-01-10 7da512973b40df83aa48fa9b57b4f365466e253b
整理
已添加2个文件
已修改7个文件
245 ■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/erp/UserListRequest.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CardDeletionRequest.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CardLossRequest.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -18,8 +18,8 @@
 * @date 2021-10-10 14:40:35
 * https://www.bejson.com/othertools/cron/  cron è¡¨è¾¾å¼ç”Ÿæˆåœ°å€
 */
//@Component
//@EnableScheduling
@Component
@EnableScheduling
public class ScheduleTool {
    @Autowired
server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/erp/UserListRequest.java
@@ -15,9 +15,9 @@
@ApiModel("人员同步接口请求信息")
public class UserListRequest {
    @ApiModelProperty(value = "人员唯一标识(ERP端ID)" ,example = "1")
    private Integer id;
    @ApiModelProperty(value = "组织唯一标识(ERP端ID)" ,example = "1")
    private Integer orgId;
    private String id;
    @ApiModelProperty(value = "组织唯一标识(ERP端ID)" )
    private String orgId;
    @ApiModelProperty(value = "人员姓名,支持模糊查询" )
    private String name;
    @ApiModelProperty(value = "身份证号" )
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CardDeletionRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class CardDeletionRequest {
   private String cardNumber;//    string    True    å¡å·ï¼Œæ ¹æ®èŽ·å–å¡ç‰‡åˆ—è¡¨æŽ¥å£èŽ·å–è¿”å›žå‚æ•°cardNo
   private String personId    ;//string    True    äººå‘˜Id,获取人员列表v2 æŽ¥å£èŽ·å–è¿”å›žå‚æ•°personId
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CardLossRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
import java.util.List;
@Data
public class CardLossRequest {
  private List<CardDeletionRequest> cardList;//    object[]    True    äººå¡å…³è”结合数组(批量挂失数量不能超过200个)
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -703,6 +703,66 @@
        return  null;
    }
    /**
     *海康退卡
     * @return
     */
    public  static  BaseResponse    cardDeletion(CardDeletionRequest param){
        log.info("【海康退卡】================开始===="+JSONObject.toJSONString(param));
        String res = null;
        try {
            res = HKTools.cardDeletion(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse >(){};
            BaseResponse     result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康退卡");
            return  result;
        }catch (Exception e){
            log.error("【海康退卡】================失败====:\n"+ e.getMessage());
        }finally {
        }
        return  null;
    }
    /**
     *海康批量挂失
     * @return
     */
    public  static  BaseResponse    cardLoss(CardLossRequest param){
        log.info("【海康批量挂失】================开始===="+JSONObject.toJSONString(param));
        String res = null;
        try {
            res = HKTools.cardDeletion(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse >(){};
            BaseResponse     result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康批量挂失");
            return  result;
        }catch (Exception e){
            log.error("【海康批量挂失】================失败====:\n"+ e.getMessage());
        }finally {
        }
        return  null;
    }
    /**
     *海康批量解挂
     * @return
     */
    public  static  BaseResponse    cardUnLoss(CardLossRequest param){
        log.info("【海康批量解挂】================开始===="+JSONObject.toJSONString(param));
        String res = null;
        try {
            res = HKTools.cardUnloss(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse >(){};
            BaseResponse     result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康批量解挂");
            return  result;
        }catch (Exception e){
            log.error("【海康批量解挂】================失败====:\n"+ e.getMessage());
        }finally {
        }
        return  null;
    }
    /**
     *海康查询设备通道的人员权限下载详情
     * @return
     */
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java
@@ -3,13 +3,17 @@
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ReUtil;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.CardDeletionRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.response.CarEventDTO;
import com.doumee.dao.business.MemberCardMapper;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.MemberCardJoinMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.Member;
@@ -21,9 +25,11 @@
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.service.business.impl.hksync.HkSyncOrgUserServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
@@ -37,9 +43,18 @@
 */
@Service
public class MemberCardServiceImpl implements MemberCardService {
    @Autowired
    private MemberRoleMapper memberRoleMapper;
    @Autowired
    private DeviceRoleMapper deviceRoleMapper;
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private EmpowerMapper empowerMapper;
    @Autowired
    private MemberCardMapper memberCardMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private MemberCardJoinMapper memberCardJoinMapper;
@@ -84,9 +99,17 @@
            this.updateById(memberCard);
        }
    }
    @Override
    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
    public void updateRefundCard(MemberCard memberCard) {
        MemberCard model = memberCardMapper.selectById(memberCard.getId());
        memberCardMapper.updateById(memberCard);
        dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId()));
        BaseResponse response = HKService.cardDeletion(new CardDeletionRequest());
        if(){
        }
    }
    @Override
@@ -111,6 +134,16 @@
        return memberCardMapper.selectList(wrapper);
    }
    /**
     * æ›´ç»†äººå‘˜å…¨éƒ¨é—¨ç¦æƒé™
     * @param member
     */
    private void dealMemberRoleEmpower(Member member ) {
        //处理新增的人员卡片数据(与海康同步)
        List<MemberCard> cards = HkSyncOrgUserServiceImpl.getNormalCardList(member,memberCardMapper);
        HkSyncOrgUserServiceImpl.dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper);
    }
    @Override
    public PageData<MemberCard> findPage(PageWrap<MemberCard> pageWrap) {
        IPage<MemberCard> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -34,6 +34,7 @@
import com.doumee.service.business.ERPSyncService;
import com.doumee.service.business.InterfaceLogService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.Synchronized;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -121,6 +122,7 @@
     */
    @Override
    @Transactional
    @Synchronized
    public String syncCompany(OrgListRequest param){
        if(!StringUtils.equals(Constants.ONE+"", systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORG_USER_ORIGIN).getCode())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,当前不支持组织同步操作~");
@@ -271,6 +273,7 @@
     */
    @Override
    @Transactional
    @Synchronized
    public  String syncUsers(UserListRequest param){
        if(!StringUtils.equals(Constants.ONE+"", systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORG_USER_ORIGIN).getCode())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,当前不支持人员同步操作~");
@@ -322,7 +325,12 @@
    private void dealUserChangeList(List<ErpUserListResponse> list, List<Member> addList, List<Member> updateList, List<Member> delList, List<Member> allList,UserListRequest param) {
        Date date = new Date();
        int num =0;
        for(ErpUserListResponse response : list){
            response.setPhone("1534569100"+num);
            response.setFaceImg("20223402/DM1005.png");
            response.setIdNo("34112219880427200"+num);
            num++;
            Company company =  new Company();
            if(StringUtils.isNotBlank(response.getOrgId())){
                company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,response.getOrgId()).last("limit 1"));
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -224,7 +224,28 @@
        }
    }
    /**
     * åˆ†æ®µè¯·æ±‚下发权限
     * @param list
     */
    private void dealDelListTask(List<Empower> list) {
        int sublistSize = 100;
        int startIndex = 0;
        int endIndex = sublistSize;
        while (startIndex < list.size()) {
            if (endIndex > list.size()) {
                endIndex = list.size();
            }
            List<Empower> sublist = list.subList(startIndex, endIndex);
            if(sublist.size()>0){
                dealDelListTaskDo(sublist);
            }
            startIndex = endIndex;
            endIndex += sublistSize;
        }
    }
    private void dealDelListTaskDo(List<Empower> list) {
        //按照父级申请分批处理每次申请数据
        if(list ==null || list.size()==0){
            return;
@@ -232,43 +253,41 @@
        Date date = new Date();
        //创建任务
        String taskId = hkTaskAddtion();
        List<Empower> successList = new ArrayList<>();
        List<Empower> errorList = new ArrayList<>();
        List<Integer> successList = new ArrayList<>();
        List<Integer> errorList = new ArrayList<>();
        for(Empower c : list) {
            //向任务添加人员、设备信息数据
            if(addTaskData(c,taskId,HKConstants.OPERA_TYPE.DEL.getKey())){
                successList.add(c);
                successList.add(c.getId());
            }else{
                errorList.add(c);
                errorList.add(c.getId());
            }
        }
        if(successList.size()>0){
            //开始执行下发
            boolean status = startTask(taskId);
            for(Empower model : successList){
                Empower update = new Empower();
                update.setId(model.getId());
                update.setSendDate(date);
                update.setEditDate(date);
                update.setHkId(taskId);
                update.setRemark(status?"下发任务执行成功":"下发任务执行失败");
                update.setSendInfo(status?"下发任务执行成功":"下发任务执行失败");
                //下发中
                update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail);
                empowerMapper.updateById(update);
            }
            empowerMapper.update(null,new UpdateWrapper<Empower>()
                    .lambda()
                    .set(Empower::getSendDate,date)
                    .set(Empower::getEditDate,date)
                    .set(Empower::getSendStatus,status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail)
                    .set(Empower::getHkId,taskId)
                    .set(Empower::getSendInfo,status?"下发任务执行成功":"下发任务执行失败")
                    .set(Empower::getRemark,status?"下发任务执行成功":"下发任务执行失败")
                    .set(Empower::getEditDate,date)
                    .in(Empower::getId,successList));
        }
        for(Empower model : errorList){
            Empower update = new Empower();
            update.setId(model.getId());
            update.setSendDate(date);
            update.setEditDate(date);
            update.setHkId(taskId);
            update.setSendStatus(Constants.EmpowerStatus.fail);
            update.setSendInfo( "添加下发任务数据刪除授权失败");
            update.setRemark( "添加下发任务数据刪除授权失败");
            empowerMapper.updateById(update);
        }
        empowerMapper.update(null,new UpdateWrapper<Empower>()
                .lambda()
                .set(Empower::getSendStatus,Constants.EmpowerStatus.fail)
                .set(Empower::getSendDate,date)
                .set(Empower::getEditDate,date)
                .set(Empower::getHkId,taskId)
                .set(Empower::getSendInfo, "添加下发任务数据刪除授权失败")
                .set(Empower::getRemark, "添加下发任务数据刪除授权失败")
                .set(Empower::getEditDate,date)
                .in(Empower::getId,errorList));
    }
    private void dealNewListTask(List<Empower> list) {
@@ -407,13 +426,13 @@
        queryWrapper.selectAll(Empower.class);
        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
        queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
        queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType);
        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.downloaded);
        queryWrapper.isNotNull(Member::getHkId) ;
        queryWrapper.orderByAsc(Empower::getSendDate);
        queryWrapper.isNotNull(Empower::getMemberHkId) ;
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java
@@ -43,10 +43,13 @@
public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private CompanyMapper companyMapper;
    @Autowired
    private MemberRoleMapper memberRoleMapper;
    @Autowired
    private DeviceRoleMapper deviceRoleMapper;
    @Autowired
    private MemberRoleMapper memberRoleMapper;
    private DeviceMapper deviceMapper;
    @Autowired
    private EmpowerMapper empowerMapper;
    @Autowired
@@ -55,8 +58,6 @@
    private MemberJoinMapper memberMapper;
    @Autowired
    private ERPSyncService erpSyncService;
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
@@ -284,7 +285,7 @@
            Constants.DEALING_HK_USER =false;
        }
    }
    private   List<Integer>  getRoleIdByParam(  Member member) {
    public static   List<Integer>  getRoleIdByParam(  Member member,DeviceRoleMapper deviceRoleMapper) {
            //查询数据库存在的权限
            List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                    .eq(DeviceRole::getType,Constants.TWO)
@@ -332,10 +333,14 @@
    private void dealMemberRoleEmpower(Member member ) {
        //处理新增的人员卡片数据(与海康同步)
        List<MemberCard> cards = dealMemberHkCard(member);
        dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper);
    }
    public static void dealMemberRoleEmpowerDo(List<MemberCard> cards,Member member , DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
        if(cards == null || cards.size() == 0){
            return;
        }
        List<Integer> doorIds = getRoleIdByParam(member);
        List<Integer> doorIds = getRoleIdByParam(member,deviceRoleMapper);
        if(doorIds==null || doorIds.size() == 0){
            return;
        }
@@ -402,10 +407,7 @@
                .eq(MemberCard::getHkStatus,Constants.ZERO)  );
        if(memberCards==null ||  memberCards.size()==0){
            //没有带处理的数据,直接跳过
            return    memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda()
                    .eq(MemberCard::getMemberId,member.getId())
                    .eq(MemberCard::getType,Constants.TWO)
                    .eq(MemberCard::getHkStatus,Constants.ONE)  );
            return  getNormalCardList(member,memberCardMapper);
        }
        List<Integer> allCodes = new ArrayList<>();
@@ -456,11 +458,18 @@
                .notIn(doneCodes.size()>0,MemberCard::getCode,doneCodes)
                .in(MemberCard::getId,allCodes));
       return   memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda()
       return   getNormalCardList(member,memberCardMapper);
    }
    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::getStatus,Constants.MemberCard.normal)
                .eq(MemberCard::getHkStatus,Constants.ONE)  );
    }
    /**
     *  å¦‚果之前已经和海康同步,则更新用户数据以及人脸数据(可能新增人脸 ä¹Ÿå¯èƒ½æ›´æ–°äººè„¸ï¼‰
@@ -594,7 +603,7 @@
     */
    private boolean doHkDeleteUser(Integer  id,String delHkIds,  Date date ) {
        if(StringUtils.isBlank(delHkIds)){
            return false;
            return true;
        }
        UserDelRequest request = new UserDelRequest();
        request.setPersonIds(new String[]{delHkIds});