jsk 门禁人脸下发
This commit is contained in:
		
							parent
							
								
									b9c6165229
								
							
						
					
					
						commit
						b214fb353a
					
				| 
						 | 
				
			
			@ -0,0 +1,86 @@
 | 
			
		|||
package com.bonus.canteen.core.cook.task;
 | 
			
		||||
 | 
			
		||||
import com.bonus.canteen.core.common.utils.RedisUtil;
 | 
			
		||||
import com.bonus.canteen.core.cook.service.ICookRecipeService;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.domain.AccessAuthority;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.domain.KitchenStaffInfo;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.service.IKitchenDeviceInfoService;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.service.IKitchenStaffInfoService;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.utils.NetSDK.FaceManage;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.utils.initServer;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.vo.KitchenDeviceListVO;
 | 
			
		||||
import com.bonus.common.houqin.constant.DeviceTypeEnum;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.scheduling.annotation.Scheduled;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import org.springframework.transaction.support.TransactionTemplate;
 | 
			
		||||
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Component
 | 
			
		||||
public class KitchenStaffInfoFaceTask {
 | 
			
		||||
   private static final Logger logger = LoggerFactory.getLogger(KitchenStaffInfoFaceTask.class);
 | 
			
		||||
   @Autowired
 | 
			
		||||
   private IKitchenStaffInfoService kitchenStaffInfoService;
 | 
			
		||||
 | 
			
		||||
   @Autowired
 | 
			
		||||
   private IKitchenDeviceInfoService kitchenDeviceInfoService;
 | 
			
		||||
 | 
			
		||||
//   @Autowired
 | 
			
		||||
//   private TransactionTemplate transactionTemplate;
 | 
			
		||||
 | 
			
		||||
   //@XxlJob("cookRecipeHandler")
 | 
			
		||||
   @Scheduled(fixedDelay = 10*60*1000)
 | 
			
		||||
   public void KitchenStaffInfoFaceHandler() {
 | 
			
		||||
      if(1==1){
 | 
			
		||||
         return;
 | 
			
		||||
      }
 | 
			
		||||
      logger.info("[定时修复发送门禁人脸信息]开始:{},{}", "0", LocalDateTime.now());
 | 
			
		||||
      try{
 | 
			
		||||
         List<KitchenStaffInfo> list=this.kitchenStaffInfoService.selectKitchenStaffInfoList(new KitchenStaffInfo());
 | 
			
		||||
         int userl=-1;
 | 
			
		||||
         for(KitchenStaffInfo info:list){
 | 
			
		||||
            if("1".equals(info.getFaceFlage())){
 | 
			
		||||
               continue;
 | 
			
		||||
            }
 | 
			
		||||
            List<AccessAuthority> devlist=new ArrayList<>();
 | 
			
		||||
            if(info.getAccessAuthorityList()!=null&&info.getAccessAuthorityList().size()>0){
 | 
			
		||||
               for(AccessAuthority aaInfo:info.getAccessAuthorityList()){
 | 
			
		||||
                  if(DeviceTypeEnum.DOOR.getKey().equals(aaInfo.getDeviceType())){
 | 
			
		||||
                     devlist.add(aaInfo);
 | 
			
		||||
                  }
 | 
			
		||||
               }
 | 
			
		||||
            }
 | 
			
		||||
            if(devlist!=null&&devlist.size()>0){
 | 
			
		||||
               for(AccessAuthority aaInfo:devlist){
 | 
			
		||||
                  KitchenDeviceListVO vo=kitchenDeviceInfoService.selectKitchenDeviceInfoByDeviceId(aaInfo.getDeviceId());
 | 
			
		||||
                  String ip="192.168.20.51";
 | 
			
		||||
                  String user="admin";
 | 
			
		||||
                  String pass="JYY202509";
 | 
			
		||||
                  userl=initServer.LoginReture(ip,user,pass,(short) 8000,1);
 | 
			
		||||
                  if(userl==-1){
 | 
			
		||||
                     logger.info("[定时修复发送门禁人脸信息]:{},{}", ip+"无法登录", LocalDateTime.now());
 | 
			
		||||
                  }else{
 | 
			
		||||
                     logger.info("[定时修复发送门禁人脸信息]:{},{}", ip+"登录成功", LocalDateTime.now());
 | 
			
		||||
                     logger.info(info.getStaffNo());
 | 
			
		||||
                     logger.info(info.getFaceUrl());
 | 
			
		||||
                     int faceres=FaceManage.addFaceByUrl(userl,info.getStaffNo(),info.getFaceUrl());
 | 
			
		||||
                     if(faceres==1){
 | 
			
		||||
                        kitchenStaffInfoService.updateKitchenStaffInfoFaceFlage(info);
 | 
			
		||||
                     }
 | 
			
		||||
                  }
 | 
			
		||||
               }
 | 
			
		||||
            }
 | 
			
		||||
         }
 | 
			
		||||
         initServer.logout(userl);
 | 
			
		||||
      }catch (Exception e){
 | 
			
		||||
         e.printStackTrace();
 | 
			
		||||
      }
 | 
			
		||||
      logger.info("[定时修复发送门禁人脸信息]结束:{},{}", "1", LocalDateTime.now());
 | 
			
		||||
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +121,7 @@ public class KitchenStaffInfo extends BaseEntity {
 | 
			
		|||
    private String encryptedSearchValue;
 | 
			
		||||
 | 
			
		||||
    private String searchValue;
 | 
			
		||||
 | 
			
		||||
    private String faceFlage;
 | 
			
		||||
    public String getHealthCertFrontImg() {
 | 
			
		||||
        return FileUrlUtil.getFileUrl(this.healthCertFrontImg);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,7 @@ public interface KitchenDeviceInfoMapper extends BaseMapper<KitchenDeviceInfo> {
 | 
			
		|||
     */
 | 
			
		||||
    public int insertKitchenDeviceInfo(KitchenDeviceInfo kitchenDeviceInfo);
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改厨房设备基础信息
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
package com.bonus.canteen.core.kitchen.mapper;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import com.bonus.canteen.core.kitchen.domain.KitchenDeviceInfo;
 | 
			
		||||
import com.bonus.canteen.core.kitchen.domain.KitchenStaffInfo;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +44,7 @@ public interface KitchenStaffInfoMapper {
 | 
			
		|||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    public int updateKitchenStaffInfo(KitchenStaffInfo kitchenStaffInfo);
 | 
			
		||||
 | 
			
		||||
    public int updateKitchenStaffInfoFaceFlage(KitchenStaffInfo kitchenStaffInfo);
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除厨房员工资料
 | 
			
		||||
     * 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,7 @@ public interface IKitchenStaffInfoService {
 | 
			
		|||
     */
 | 
			
		||||
    public int updateKitchenStaffInfo(KitchenStaffInfo kitchenStaffInfo);
 | 
			
		||||
 | 
			
		||||
    public int updateKitchenStaffInfoFaceFlage(KitchenStaffInfo kitchenStaffInfo);
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改厨房员工人脸状态
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -217,6 +217,10 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
 | 
			
		|||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int updateKitchenStaffInfoFaceFlage(KitchenStaffInfo kitchenStaffInfo){
 | 
			
		||||
        return kitchenStaffInfoMapper.updateKitchenStaffInfoFaceFlage(kitchenStaffInfo);
 | 
			
		||||
    }
 | 
			
		||||
    @Override
 | 
			
		||||
    public int updateKitchenStaffFaceState(KitchenStaffInfo kitchenStaffInfo) {
 | 
			
		||||
        if(Objects.isNull(kitchenStaffInfo.getStaffId())) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -129,7 +129,8 @@ public final class FaceManage {
 | 
			
		|||
     * @param employeeNo 人员工号
 | 
			
		||||
     * @throws JSONException
 | 
			
		||||
     */
 | 
			
		||||
    public static void addFaceByUrl(int userID,String employeeNo,String fileUrl) throws JSONException {
 | 
			
		||||
    public static int addFaceByUrl(int userID,String employeeNo,String fileUrl) throws JSONException {
 | 
			
		||||
        int userl=-1;
 | 
			
		||||
        HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024);    //数组
 | 
			
		||||
        String strInBuffer = "PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json";
 | 
			
		||||
        System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +138,7 @@ public final class FaceManage {
 | 
			
		|||
        int lHandler = initServer.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_FACE_DATA_RECORD, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
 | 
			
		||||
        if (lHandler < 0){
 | 
			
		||||
            System.out.println("Addface NET_DVR_StartRemoteConfig 失败,错误码为"+initServer.hCNetSDK.NET_DVR_GetLastError());
 | 
			
		||||
            return;
 | 
			
		||||
            return userl;
 | 
			
		||||
        }else{
 | 
			
		||||
            System.out.println("Addface NET_DVR_StartRemoteConfig 成功!");
 | 
			
		||||
            HCNetSDK.NET_DVR_JSON_DATA_CFG struAddFaceDataCfg = new HCNetSDK.NET_DVR_JSON_DATA_CFG();
 | 
			
		||||
| 
						 | 
				
			
			@ -190,11 +191,13 @@ public final class FaceManage {
 | 
			
		|||
                        System.out.println("下发人脸成功,但是有异常情况:" + jsonResult.toString());
 | 
			
		||||
                    }else{
 | 
			
		||||
                        System.out.println("下发人脸成功,  json retun:" + jsonResult.toString());
 | 
			
		||||
                        userl=1;
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                }else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
 | 
			
		||||
                    //下发人脸时:dwState其实不会走到这里,因为设备不知道我们会下发多少个人,所以长连接需要我们主动关闭
 | 
			
		||||
                    System.out.println("下发人脸完成");
 | 
			
		||||
                    userl=1;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +205,9 @@ public final class FaceManage {
 | 
			
		|||
                System.out.println("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + initServer.hCNetSDK.NET_DVR_GetLastError());
 | 
			
		||||
            }else{
 | 
			
		||||
                System.out.println("NET_DVR_StopRemoteConfig接口成功");
 | 
			
		||||
                userl=1;
 | 
			
		||||
            }
 | 
			
		||||
            return userl;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -193,5 +193,57 @@ public class initServer implements CommandLineRunner {
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public static int LoginReture(String ipadress, String user, String psw, short port,int type) {
 | 
			
		||||
        int returnl=-1;
 | 
			
		||||
        //注册
 | 
			
		||||
        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
 | 
			
		||||
        String m_sDeviceIP = ipadress;//设备ip地址
 | 
			
		||||
        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
 | 
			
		||||
        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
 | 
			
		||||
        String m_sUsername = user;//设备用户名
 | 
			
		||||
        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
 | 
			
		||||
        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
 | 
			
		||||
        String m_sPassword = psw;//设备密码
 | 
			
		||||
        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
 | 
			
		||||
        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
 | 
			
		||||
        m_strLoginInfo.wPort = port; //sdk端口
 | 
			
		||||
        m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
 | 
			
		||||
        m_strLoginInfo.write();
 | 
			
		||||
        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
 | 
			
		||||
        if(type == 1){
 | 
			
		||||
            returnl = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
 | 
			
		||||
            if (returnl == -1){
 | 
			
		||||
                System.out.println(ipadress+"门禁登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
 | 
			
		||||
            }else{
 | 
			
		||||
                System.out.println(ipadress+"门禁登录成功!");
 | 
			
		||||
                m_strDeviceInfo.read();
 | 
			
		||||
                iCharEncodeType = m_strDeviceInfo.byCharEncodeType;
 | 
			
		||||
            }
 | 
			
		||||
        }else{
 | 
			
		||||
            returnl = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
 | 
			
		||||
            if (returnl == -1){
 | 
			
		||||
                System.out.println("智能识别登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
 | 
			
		||||
            }else{
 | 
			
		||||
                System.out.println("智能识别登录成功!");
 | 
			
		||||
                m_strDeviceInfo.read();
 | 
			
		||||
                iCharEncodeType = m_strDeviceInfo.byCharEncodeType;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return returnl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void logout(int m_lUserID) {
 | 
			
		||||
        if (m_lUserID != -1) {
 | 
			
		||||
            boolean result = hCNetSDK.NET_DVR_Logout_V30(m_lUserID); // 使用V30版本注销,根据你的SDK版本选择合适的注销方法
 | 
			
		||||
            if (result) {
 | 
			
		||||
                System.out.println("Logout successful");
 | 
			
		||||
            } else {
 | 
			
		||||
                System.out.println("Logout failed");
 | 
			
		||||
            }
 | 
			
		||||
            m_lUserID = -1; // 重置用户ID
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,13 +26,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		|||
        <result property="createTime"    column="create_time"    />
 | 
			
		||||
        <result property="updateBy"    column="update_by"    />
 | 
			
		||||
        <result property="updateTime"    column="update_time"    />
 | 
			
		||||
        <result property="faceFlage"    column="face_flage"    />
 | 
			
		||||
    </resultMap>
 | 
			
		||||
 | 
			
		||||
    <sql id="selectKitchenStaffInfoVo">
 | 
			
		||||
        select kst.staff_id, kst.canteen_id, staff_no, staff_name, post_name, mobile, password, sex, kst.area_id, health_cert_expire,
 | 
			
		||||
               health_cert_front_img, health_cert_back_img, nutrity_cert_expire,
 | 
			
		||||
               safety_cert_expire, kst.create_by, kst.create_time, kst.update_by, kst.update_time,
 | 
			
		||||
               ksf.photo_url, ksf.face_state, bc.canteen_name, ba.area_name
 | 
			
		||||
               ksf.photo_url, ksf.face_state, bc.canteen_name, ba.area_name,kst.face_flage
 | 
			
		||||
        from kitchen_staff_info kst
 | 
			
		||||
        left join kitchen_staff_face ksf on kst.staff_id = ksf.staff_id
 | 
			
		||||
        left join basic_canteen bc on kst.canteen_id = bc.canteen_id
 | 
			
		||||
| 
						 | 
				
			
			@ -159,6 +160,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		|||
        where staff_id = #{staffId}
 | 
			
		||||
    </update>
 | 
			
		||||
 | 
			
		||||
    <update id="updateKitchenStaffInfoFaceFlage" parameterType="com.bonus.canteen.core.kitchen.domain.KitchenStaffInfo">
 | 
			
		||||
        update kitchen_staff_info set face_flage='1' where staff_id=#{staffId}
 | 
			
		||||
    </update>
 | 
			
		||||
    <delete id="deleteKitchenStaffInfoByStaffId" parameterType="Long">
 | 
			
		||||
        delete from kitchen_staff_info where staff_id = #{staffId}
 | 
			
		||||
    </delete>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue