jiangping
2023-12-06 69676cf96655ea6235a5e228c18783916d4edb55
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/service/business/impl/HkSyncServiceImpl.java ÐÞ¸Ä
@@ -1,32 +1,25 @@
package com.doumee.service.business.impl;
package com.doumee.service.business.impl.hksync;
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.core.constants.ResponseStatus;
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.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
import com.doumee.core.haikang.model.param.respose.ParkListResponse;
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.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.service.business.DeviceService;
import com.doumee.service.business.HkSyncService;
import com.doumee.dao.business.model.Parks;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -37,13 +30,16 @@
 * @date 2023/11/30 15:33
 */
@Service
public class HkSyncServiceImpl implements HkSyncService {
public class HkSyncDeviceServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private HKService hkService;
    /**
     * åŒæ­¥æµ·åº·é—¨ç¦è®¾å¤‡æ•°æ®
     * @param param
     * @return
     */
    @Override
//    @Async
    public String syncHkDevices(AcsDeviceListRequest param){
@@ -56,10 +52,11 @@
        List<Device> allList = deviceMapper.selectList(null);
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            param = new AcsDeviceListRequest();
            param.setPageNo(1);
            param.setPageNo(curPage);
            param.setPageSize(10000);
            BaseResponse<AcsDeviceListResponse> response = hkService.acsDeviceList(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
@@ -70,11 +67,17 @@
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            List<AcsDeviceInfoResponse> tlist = r.getList();
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allHkList.addAll(r.getList());
            }
            curPage++;
        }
        //判断获取删除的门禁设备,逻辑删除
        getAddAndEditList(allList,allHkList,addList,editList,date);
        getDeleteList(allList,allHkList,deleteList,date);
        /**
         * èŽ·å–å¢žåˆ æ”¹æ•°æ®é›†åˆ
         */
        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
        if(deleteList.size()>0){
            //逻辑删除
            for(Device d : deleteList){
@@ -89,25 +92,27 @@
                deviceMapper.updateById(d);
            }
        }
        return "同步门禁数据:新增【"+addList.size()+"】条,更新【"+editList.size()+"】条,删除【"+deleteList.size()+"】条";
        return "同步数据:新增【"+addList.size()+"】条,更新【"+editList.size()+"】条,删除【"+deleteList.size()+"】条";
    }
    private void getAddAndEditList(List<Device> allList, List<AcsDeviceInfoResponse> allHkList, List<Device> addList, List<Device> editList, Date date) {
    private void getDataChangeList(List<Device> allList, List<AcsDeviceInfoResponse> allHkList, List<Device> addList, List<Device> editList,List<Device> deleteList, Date date) {
        if(allHkList!=null && allHkList.size()>0){
            for(AcsDeviceInfoResponse device : allHkList){
                Device model = getExistedDevice(device,allList);
                if(model !=null){
                    //如果已存在,则更新数据
                    model =  initDeviceByHkData(model,device,date);
                    model =  initDataByHkData(model,device,date);
                    editList.add(model);
                }else{
                    //如果不存在,则新增数据
                    model = new Device();
                    model =  initDeviceByHkData(model,device,date);
                    model =  initDataByHkData(model,device,date);
                    addList.add(model);
                }
            }
        }
        //判断获取删除的门禁设备,逻辑删除
        getDeleteList(allList,allHkList,deleteList,date);
    }
    /**
@@ -117,7 +122,7 @@
     * @param date
     * @return
     */
    private Device initDeviceByHkData(Device model, AcsDeviceInfoResponse device,Date date) {
    private Device initDataByHkData(Device model, AcsDeviceInfoResponse device,Date date) {
        model.setIsdeleted(Constants.ZERO);
        model.setIp(device.getIp());
        model.setHkDate(date);