nidapeng
2024-03-19 6c40e04eb7c2060feb2533735cd3089d438965e5
整理
已添加1个文件
已修改17个文件
399 ■■■■ 文件已修改
server/admin_timer/src/main/java/com/doumee/task/ScheduleSendTaskTool.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin_timer/src/main/java/com/doumee/task/ScheduleTaskDetailTool.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin_timer/src/main/java/com/doumee/task/ScheduleTaskProgressTool.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/DeviceRoleController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberCardController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/erp/ErpTool.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberRoleJoinMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberRole.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/MemberCardService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceRoleServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/openapi/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin_timer/src/main/java/com/doumee/task/ScheduleSendTaskTool.java
@@ -22,23 +22,22 @@
    @Autowired
    private HkSyncEmpowerServiceImpl hkSyncEmpowerService;
    public static int endId = 0;
    public static Integer endId = 0;
    /**
     * å®šæ—¶åŒæ­¥å†…部人员授权到海康系统
     * @throws Exception
     */
    @Scheduled(fixedDelay= 30*1000)
    public void syncEmpowerData()  {
      endId = hkSyncEmpowerService.syncEmpowerData(0);
        if(endId ==null){
            endId =0;
        }
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
        for (int i = 0; i < 9; i++) {
            if(endId!=null){
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
      endId = hkSyncEmpowerService.syncEmpowerData(endId);
            }
        }
    }
}
server/admin_timer/src/main/java/com/doumee/task/ScheduleTaskDetailTool.java
@@ -19,6 +19,7 @@
@EnableScheduling
public class ScheduleTaskDetailTool {
    public static Integer endId = 0;
    @Autowired
    private HkSyncEmpowerServiceImpl hkSyncEmpowerService;
@@ -26,8 +27,16 @@
     * å®šæ—¶æŸ¥è¯¢äººå‘˜å®žé™…下发权限结果,是否已经下载成功
     * @throws Exception
     */
    @Scheduled(fixedDelay= 3*1000)
    @Scheduled(fixedDelay= 30*1000)
    public void syncEmpowerDetailData()  {
        hkSyncEmpowerService.syncEmpowerDetailData();
        if(endId ==null){
            endId =0;
        }
        endId =  hkSyncEmpowerService.syncEmpowerDetailData(endId);
        for (int i = 0; i < 9; i++) {
            if(endId!=null){
                endId =  hkSyncEmpowerService.syncEmpowerDetailData(endId);
            }
        }
    }
}
server/admin_timer/src/main/java/com/doumee/task/ScheduleTaskProgressTool.java
@@ -18,15 +18,17 @@
@Component
@EnableScheduling
public class ScheduleTaskProgressTool {
    public static Integer endId = 0;
    @Autowired
    private HkSyncEmpowerServiceImpl hkSyncEmpowerService;
    /**
     * å®šæ—¶æŸ¥è¯¢äººå‘˜ä¸‹å‘海康结果(任务是否已下载结束)
     * @throws Exception
     */
    @Scheduled(fixedDelay=60*1000)
    @Scheduled(fixedDelay=20*1000)
    public void syncEmpowerResultData()  {
        hkSyncEmpowerService.syncEmpowerResultData();
        endId = hkSyncEmpowerService.syncEmpowerResultData(endId);
    }
}
server/dmvisit_admin/src/main/java/com/doumee/api/business/DeviceRoleController.java
@@ -33,14 +33,14 @@
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    //@RequiresPermissions("business:devicerole:create")
    @RequiresPermissions("business:devicerole:create")
    public ApiResponse create(@RequestBody DeviceRole deviceRole) {
        return ApiResponse.success(deviceRoleService.create(deviceRole));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    //@RequiresPermissions("business:devicerole:delete")
    @RequiresPermissions("business:devicerole:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        deviceRoleService.deleteById(id);
        return ApiResponse.success(null);
@@ -48,7 +48,7 @@
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    //@RequiresPermissions("business:devicerole:delete")
    @RequiresPermissions("business:devicerole:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
@@ -61,7 +61,7 @@
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    //@RequiresPermissions("business:devicerole:update")
    @RequiresPermissions("business:devicerole:update")
    public ApiResponse updateById(@RequestBody DeviceRole deviceRole) {
        deviceRoleService.updateById(deviceRole);
        return ApiResponse.success(null);
@@ -69,7 +69,7 @@
    @ApiOperation("根据ID修改默认门禁组状态")
    @PostMapping("/updateStatusById")
    //@RequiresPermissions("business:devicerole:update")
    @RequiresPermissions("business:devicerole:update")
    public ApiResponse updateStatusById(@RequestBody DeviceRole deviceRole) {
        deviceRoleService.updateStatusById(deviceRole);
        return ApiResponse.success(null);
@@ -77,14 +77,14 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    //@RequiresPermissions("business:devicerole:query")
    @RequiresPermissions("business:devicerole:query")
    public ApiResponse<PageData<DeviceRole>> findPage (@RequestBody PageWrap<DeviceRole> pageWrap) {
        return ApiResponse.success(deviceRoleService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    //@RequiresPermissions("business:devicerole:exportExcel")
    @RequiresPermissions("business:devicerole:exportExcel")
    public void exportExcel (@RequestBody PageWrap<DeviceRole> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(DeviceRole.class).export(deviceRoleService.findPage(pageWrap).getRecords(), "门禁角色信息表", response);
    }
server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberCardController.java
@@ -112,6 +112,7 @@
        return ApiResponse.success(memberCardService.findById(id));
    }
    @ApiOperation("根据条件查询可用卡号")
    @PostMapping("/queryCard")
    //@RequiresPermissions("business:membercard:query")
server/dmvisit_service/src/main/java/com/doumee/core/erp/ErpTool.java
@@ -17,11 +17,14 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.doumee.dao.business.InterfaceLogMapper;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.dao.business.model.Member;
import com.doumee.service.business.InterfaceLogService;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -34,8 +37,12 @@
    @Autowired
    private InterfaceLogService interfaceLogService;
    @Autowired
    private SqlSessionFactory sqlSessionFactory;
    public void saveInterfaceLog(Object param, String path,String result,Integer type) {
        SqlSession sqlSession2 = sqlSessionFactory.openSession(true);
        InterfaceLogMapper mapper2 = sqlSession2.getMapper(InterfaceLogMapper.class);
        InterfaceLog interfaceLog=new InterfaceLog();
        interfaceLog.setType(type);
        interfaceLog.setCreateDate(new Date());
@@ -47,7 +54,8 @@
        interfaceLog.setRepose(result);
        interfaceLog.setName(path);
        interfaceLog.setUrl(path);
        interfaceLogService.create(interfaceLog);
        mapper2.insert(interfaceLog);
        sqlSession2.commit();
    }
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberRoleJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business.join;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRole;
import com.github.yulichang.base.mapper.MPJJoinMapper;
/**
 * @author T14
 */
//@Repository
public interface MemberRoleJoinMapper extends MPJJoinMapper<MemberRole> {
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberRole.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -58,6 +59,9 @@
    @ApiModelProperty(value = "角色编码(关联door_role),多个英文逗号隔开")
    @ExcelColumn(name="角色编码(关联door_role)")
    private String roleId;
    @ApiModelProperty(value = "可使用门禁编码集合,多个英文逗号隔开")
    @TableField(exist = false)
    private String doorIds;
}
server/dmvisit_service/src/main/java/com/doumee/service/business/MemberCardService.java
@@ -91,7 +91,7 @@
     * @return PageData<MemberCard>
     */
    PageData<MemberCard> findPage(PageWrap<MemberCard> pageWrap);
    void dealMemberRoleEmpowerById(Integer memberId );
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
@@ -9,6 +9,7 @@
import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
import com.doumee.dao.business.model.ParkBook;
import io.swagger.models.auth.In;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
@@ -73,7 +74,7 @@
    void syncEmpowerDataNew(int start,int end);
    void syncParkBookData();
    void syncParkBookBySingleModel(ParkBook c);
    void syncEmpowerResultData();
    void syncEmpowerDetailData();
    Integer syncEmpowerResultData(Integer endId);
    Integer   syncEmpowerDetailData(Integer endId);
    void syncParkRecords(Date date);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceRoleServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -11,11 +12,10 @@
import com.doumee.core.erp.model.openapi.response.RoleListResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.MemberRoleJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.response.DeviceRoleVO;
import com.doumee.service.business.DeviceRoleService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -23,7 +23,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
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;
import org.apache.shiro.SecurityUtils;
@@ -42,12 +45,22 @@
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class DeviceRoleServiceImpl implements DeviceRoleService {
    @Autowired
    private DeviceRoleMapper deviceRoleMapper;
    @Autowired
    private MemberService memberService;
    private MemberCardMapper memberCardMapper;
    @Autowired
    private EmpowerMapper empowerMapper;
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private MemberRoleJoinMapper memberRoleMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Override
@@ -118,6 +131,10 @@
    @Override
    public void updateById(DeviceRole deviceRole) {
        DeviceRole model = deviceRoleMapper.selectById(deviceRole.getId());
        if(model == null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        DeviceRole newDeviceRole = null;
        if(null != deviceRole.getType()) {
            newDeviceRole = getDeviceRole(deviceRole.getType());
@@ -131,9 +148,109 @@
            update.setIsDefault(Constants.ONE);
            deviceRoleMapper.updateById(update);
        }
        deviceRoleMapper.updateById(deviceRole);
       int t = deviceRoleMapper.updateById(deviceRole);
       if(t>0){
            Thread tt = new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        startUpdateMemberEmpower(model,deviceRole);
                    }catch (Exception e){
                        log.error("======门禁分组修改,更新人员权限失败==="+e.getMessage());
                    }
                }
            });
            tt.start();
       }
    }
    /**
     * æ›´æ–°è¯¥æƒé™ä¸‹ç›¸å…³çš„人员最新全新下发
     * @param model
     * @param deviceRole
     */
    private void startUpdateMemberEmpower(DeviceRole model, DeviceRole deviceRole) {
        String[] ids = StringUtils.defaultString(model.getDoorIds()).split(",");
        String[] newIds =StringUtils.defaultString(deviceRole.getDoorIds()).split(",");
        List<Integer>  delIds = getChangeIdsByArray(newIds,ids);//删除的设备
        List<Integer>  addIds = getChangeIdsByArray(ids,newIds);//最新设备
        if((addIds==null ||addIds.size()==0)&&( delIds ==null || delIds.size() == 0 )){
            //如果没有变化,不做处理
            return;
        }
        List<Integer>  allids = getChangeIdsByArray(new String[]{},newIds);//最新设备
        List<MemberRole> memberRoleList = memberRoleMapper.selectList(new QueryWrapper<MemberRole>().lambda()
                .eq(MemberRole::getRoleId,model.getId())
                .eq(MemberRole::getIsdeleted,Constants.ZERO)
        );
        if(memberRoleList!=null && memberRoleList.size()>0){
            for(MemberRole memberRole : memberRoleList){
                //如果有人员授权了该权限
                Member member = memberMapper.selectById(memberRole.getMemberId());
                if(member==null || member.getIsdeleted().equals(Constants.ONE)){
                    continue;
                }
                MPJLambdaWrapper<MemberRole> queryWrapper = new MPJLambdaWrapper<>();
                queryWrapper.leftJoin(DeviceRole.class,DeviceRole::getId,MemberRole::getRoleId );
                queryWrapper.selectAll(MemberRole.class)
                        .selectAs(DeviceRole::getDoorIds, MemberRole::getDoorIds)
                        .eq(MemberRole::getMemberId,memberRole.getMemberId())
                        .eq(MemberRole::getIsdeleted,Constants.ZERO)
                        .ne(MemberRole::getRoleId,deviceRole.getId());
                List<MemberRole> tLis = memberRoleMapper.selectJoinList(MemberRole.class,queryWrapper);
                List<Integer>  actDelIds = getActChangeDoorIds(tLis,delIds);
                List<Integer>  actAddIds = getActChangeDoorIds(tLis,allids);
                HkSyncOrgUserToHKServiceImpl.dealChangeDeviceRoleEmpower(member,actAddIds,actDelIds,deviceRoleMapper,empowerMapper,deviceMapper);
            }
        }
    }
    /**
     * æ ¹æ®ç”¨æˆ·å½“前最新的门禁角色,查询实际应该删除或者增加的门禁点权限
     * @param tLis
     * @param changeIds
     * @return
     */
    private List<Integer> getActChangeDoorIds(List<MemberRole> tLis, List<Integer> changeIds) {
        List<Integer> list = new ArrayList<>();
        for(MemberRole memberRole : tLis){
            String[] ids = StringUtils.defaultString(memberRole.getDoorIds()).split(",");
            if(ids!=null && ids.length>0){
                for (String s:ids){
                    list.add(Integer.parseInt(s));
                }
            }
        }
        List<Integer> actList = new ArrayList<>();
        if(list.size()>0){
            Flag:
            for (Integer t : changeIds){
                for (Integer tt : list){
                    if(Constants.equalsInteger(t,tt)){
                        continue Flag;
                    }
                }
                actList.add(t);
            }
        }
        return  actList;
    }
    private List<Integer> getChangeIdsByArray(String[] ids, String[] newIds) {
        List<Integer> list = new ArrayList<>();
        if(newIds!=null){
            FLAG :
            for(String s :newIds){
                for(String s1 :ids){
                    if(StringUtils.equals(s,s1)){
                        continue FLAG;
                    }
                }
                list.add(Integer.parseInt(s));
            }
        }
        return list;
    }
    @Override
    public void updateStatusById(DeviceRole deviceRole) {
        // èŽ·å–ä¹‹å‰æ˜¯å¦å­˜åœ¨é»˜è®¤é—¨ç¦ç»„
@@ -278,7 +395,7 @@
                Member member = new Member();
                member.setIsdeleted(Constants.ZERO);
                member.setRoleIdParam("["+dto.getId()+"]");
                dto.setMemberNum((int) memberService.count(member));
                dto.setMemberNum( memberMapper.selectCount(new QueryWrapper<>(member)));
            }
            newPage.setRecords(deviceRoleList);
        }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java
@@ -77,7 +77,6 @@
        memberCard.setCreateDate(new Date());
        memberCard.setStatus(Constants.ONE);
        memberCard.setIsdeleted(Constants.ZERO);
        dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId()));
        Member member = memberMapper.selectById(memberCard.getMemberId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息");
@@ -101,6 +100,8 @@
        }
        memberCard.setHkStatus(Constants.ONE);
        memberCardMapper.insert(memberCard);
        //更新用户权限
        dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId()));
        return memberCard.getId();
    }
@@ -236,6 +237,20 @@
        List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper);
        HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper);
    }
    /**
     * æ›´ç»†äººå‘˜å…¨éƒ¨é—¨ç¦æƒé™
     * @param
     */
    @Override
    public void dealMemberRoleEmpowerById(Integer memberId ) {
        //处理新增的人员卡片数据(与海康同步)
        Member member = memberMapper.selectById(memberId);
        if(member==null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper);
        HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper);
    }
    @Override
    public PageData<MemberCard> findPage(PageWrap<MemberCard> pageWrap) {
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -42,6 +42,7 @@
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.ferp.HkSyncOrgUserToHKServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -89,6 +90,8 @@
    @Autowired
    private UserActionJoinMapper userActionJoinMapper;
    @Autowired
    private MemberCardMapper memberCardMapper;
    @Autowired
    private CompanyMapper companyMapper;
@@ -182,7 +185,14 @@
    @Override
    public void roleAuthById(Integer id) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Member member = memberMapper.selectById(id);
        if(member==null || member.getIsdeleted().equals(Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"员工信息已删除");
        }
        List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper);
        HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper);
    /*    LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Member member = memberMapper.selectById(id);
        if(member.getIsdeleted().equals(Constants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"员工信息已删除");
@@ -191,7 +201,7 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非内部人员无法进行该操作");
        }
        List<MemberRole> roleList = memberRoleMapper.selectList(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
*/
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -897,8 +897,8 @@
                    //如果已经开卡完成,不做任何处理
                }else if(model !=null){
                    //如果存在,但未开卡,则直接更改为待同步
                    model.setHkStatus(Constants.ZERO);
                    model.setRemark("待同步安防平台");
//                    model.setHkStatus(Constants.ZERO);
//                    model.setRemark("待同步安防平台");
                    model.setIsdeleted(Constants.ZERO);
                    memberCardMapper.updateById(model);
                }else{
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -128,10 +128,10 @@
    public void syncParkBookBySingleModel(ParkBook c) {
    }
    @Override
    public     void syncEmpowerResultData() {
    public     Integer syncEmpowerResultData(Integer endId) {return null;
    }
    @Override
    public     void syncEmpowerDetailData() {
    public   Integer   syncEmpowerDetailData(Integer endId) {return null;
    }
    public boolean addTaskDataAllDel(String userId, String taskId, List<Device> deviceList) {
        if(StringUtils.isBlank(userId )){
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -52,16 +52,15 @@
     * å®šæ—¶æŸ¥è¯¢æƒé™ä¸‹å‘任务进度执行结果
     */
    @Override
    public  void syncEmpowerDetailData(){
        if(Constants.DEALING_HK_EMPOWER_DETAIL){
            return   ;
        }
        Constants.DEALING_HK_EMPOWER_DETAIL = true;
        try {
    public  Integer   syncEmpowerDetailData(Integer endId){
//        if(Constants.DEALING_HK_EMPOWER_DETAIL){
//            return   ;
//        }
//        Constants.DEALING_HK_EMPOWER_DETAIL = true;
            //查询所有完成下载,待查询结果的数据记录
            List<Empower>  list = getDealListDetail();
            List<Empower>  list = getDealListDetail(endId);
           if(list == null || list.size() ==0){
               return;
               return null;
           }
            Thread t1=new Thread(new Runnable() {
                @Override
@@ -70,15 +69,12 @@
                    for(Empower c : list){
                        TaskPersonDetailRequest param = new TaskPersonDetailRequest();
                        param.setPageNo(1);
                        param.setPageSize(100);
//               param.setPersonIds(new ArrayList<>());
                        param.setPageSize(10);
                        param.setPersonIds(new String[]{c.getMemberHkId()});
                        param.setTaskId(c.getHkId());
                        TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest();
                        rec.setResourceIndexCode(c.getDeviceIndexCode());
                        rec.setResourceType(c.getDeviceType());
//               rec.setChannelNos(c.getDeviceChannelNo().split(","));
                        param.setResourceInfo(rec);
                        //查询下发状态
                        BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
@@ -153,18 +149,16 @@
                    }catch (Exception e){
                    }finally {
                        Constants.DEALING_HK_EMPOWER_DETAIL=false;
//                    Constants.DEALING_HK_EMPOWER_DETAIL=false;
                    }
                }
            });
            t1.start();
        }catch (Exception e){
            e.printStackTrace();
        }
         return list.get(list.size()-1).getId();
    }
    /**
     * å¯¹æµ·åº·åˆ é™¤ç»„织信息
     * @param id
@@ -226,7 +220,7 @@
        Constants.DEALING_HK_EMPOWER_DETAIL = true;
        try {
            //查询所有完成下载,待查询结果的数据记录
            List<Empower>  list = getDealListDetail();
            List<Empower>  list = getDealListDetail(0);
           if(list == null || list.size() ==0){
               return;
           }
@@ -272,16 +266,15 @@
     * å®šæ—¶æŸ¥è¯¢æƒé™ä¸‹å‘任务进度执行结果
     */
    @Override
    public  void syncEmpowerResultData(){
        if(Constants.DEALING_HK_EMPOWER_RESULT){
            return   ;
        }
        Constants.DEALING_HK_EMPOWER_RESULT=true;
        try {
    public  Integer syncEmpowerResultData(Integer endId){
//        if(Constants.DEALING_HK_EMPOWER_RESULT){
//            return  null ;
//        }
//        Constants.DEALING_HK_EMPOWER_RESULT=true;
            //查询所有执行中得数据
            List<Empower>  list = getIngTaskListResult();
         List<Empower>  list = getIngTaskListResult(Constants.formatIntegerNum(endId));
           if(list == null || list.size() ==0){
               return;
               return null;
           }
            Thread t1=new Thread(new Runnable() {
                @Override
@@ -315,9 +308,8 @@
                }
            });
            t1.start();
        }catch (Exception e){
            e.printStackTrace();
        }
            return list.get(list.size()-1).getId();
    }
@@ -331,7 +323,6 @@
//            return  null ;
//        }
//        Constants.DEALING_HK_EMPOWER =true;
        try {
            //先删除所有需要取消授权的数据
            List<Empower> allList =getAllWaitDealList( endId);
            if(allList !=null && allList.size()>0){
@@ -359,12 +350,6 @@
                });
                t1.start();
                return allList.get(allList.size()-1).getId();
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
//            Constants.DEALING_HK_EMPOWER =false;
        }
        return null;
    }
@@ -631,7 +616,7 @@
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }
    private List<Empower> getDealListDetail() {
    private List<Empower> getDealListDetail(int endId ) {
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Empower.class);
        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
@@ -642,17 +627,23 @@
        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.downloaded);
        queryWrapper.isNotNull(Member::getHkId) ;
        queryWrapper.gt(Empower::getId,endId);
        queryWrapper.orderByAsc(Empower::getSendDate);
        queryWrapper.last("limit 100");//每次限制下发100个
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }
    private List<Empower> getIngTaskListResult() {
    private List<Empower> getIngTaskListResult(int endId) {
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Empower.class);
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.ing);
        queryWrapper.gt(Empower::getId,endId);
        queryWrapper.groupBy(Empower::getHkId);
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        queryWrapper.orderByAsc(Empower::getSendDate);
        queryWrapper.last("limit 100");//每次限制下发100个
        List<Empower> list = empowerMapper.selectList(queryWrapper);
        return list;
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -366,9 +366,6 @@
    }
    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,deviceRoleMapper);
        if(doorIds==null || doorIds.size() == 0){
            //如果权限清空,则清空人员授权的权限数据
@@ -379,7 +376,8 @@
                    .set(Empower::getSendStatus,Constants.ZERO));
            return;
        }
        if(StringUtils.isBlank(member.getFaceImg())){
        if((cards == null || cards.size() == 0) && StringUtils.isBlank(member.getFaceId())){
            //如果没有卡 ä¹Ÿæ²¡æœ‰äººè„¸
            return;
        }
@@ -389,6 +387,66 @@
                && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){
            //如果用户是同步海康成功,添加带下发权限(只管理新增或者编辑的)
            List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,doorIds));
            if(deviceList == null || deviceList.size() == 0){
                return;
            }
            for (Device deviceRole:deviceList) {
                Empower model = new Empower();
                model.setCreateDate(new Date());
                model.setMemberId(member.getId());
                model.setIsdeleted(Constants.ZERO);
                model.setDeviceId(deviceRole.getId());
                model.setSendStatus(Constants.ZERO);
                model.setSendInfo("待同步安防平台");
                model.setRemark("待同步安防平台");
                model.setStartTime(member.getStartTime());
                model.setEndTime(member.getEndTime());
                //默认给于虚拟卡
                model.setCardNos(Constants.VIRTUAL_CARD_INDEX+member.getId());
                model.setSendType(Constants.ZERO);
                //标记最新的授权设备编码集合
                deviceIds.add(deviceRole.getId());
                list.add(model);
            }
        }
        //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                .eq(Empower::getMemberId,member.getId())
                .set(Empower::getIsdeleted,Constants.ONE)
                .eq(Empower::getIsdeleted,Constants.ZERO)
                .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds)
                .set(Empower::getSendStatus,Constants.ZERO));
        //导入新增的授权信息
        if(list.size()>0){
            //直接覆盖重复的设备权限,直接删除即可
            empowerMapper.delete(new UpdateWrapper<Empower>().lambda()
                    .eq(Empower::getMemberId,member.getId())
                    .eq(Empower::getIsdeleted,Constants.ZERO)
                    .in(Empower::getDeviceId,deviceIds) );
            empowerMapper.insertBatchSomeColumn(list);
        }
    }
    public static void dealChangeDeviceRoleEmpower( Member member ,List<Integer> addDoorIds,List<Integer> delDoorIds, DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
        if(delDoorIds!=null && delDoorIds.size()>0){
            //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
            empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                    .eq(Empower::getMemberId,member.getId())
                    .set(Empower::getIsdeleted,Constants.ONE)
                    .eq(Empower::getIsdeleted,Constants.ZERO)
                    .in(Empower::getDeviceId,delDoorIds)
                    .set(Empower::getSendStatus,Constants.ZERO));
        }
        if(StringUtils.isBlank(member.getFaceId())){
            //如果没有卡 ä¹Ÿæ²¡æœ‰äººè„¸
            return;
        }
        List<Integer> deviceIds =new ArrayList<>();//新设备编码集合
        List<Empower> list = new ArrayList<>();//新授权记录集合
        if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO)
                && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){
            //如果用户是同步海康成功,添加带下发权限(只管理新增或者编辑的)
            List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,addDoorIds));
            if(deviceList == null || deviceList.size() == 0){
                return;
            }
@@ -468,6 +526,8 @@
        //处理新增数据
        BaseResponse<List<CardInfoResponse>> result =  HKService.cardBingding(param);
        if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){
//            0x04a12022","msg":"cardNo [1223382985] is exists
            if(result.getData()!=null ){
                for(CardInfoResponse r : result.getData()){
                    doneCodes.add(r.getCardNo());
server/openapi/pom.xml
@@ -24,7 +24,7 @@
        </dependency>
    </dependencies>
    <build>
        <finalName>openapi</finalName>
        <finalName>erp_interface</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>