select di.device_id, device_name, di.parent_id, parent_type, tenant_id, version_code,
               version_name, consume_mode, communicate_mode, device_ip, device_mask, device_mac,
               device_gateway, dns_primary, dns_backup, device_sn, device_number, device_model,
               device_type, device_pwd, device_addr, device_key, device_service_ip, device_service_port,
               if_quota_limit, if_discount, if_time_limit, if_use_call_num, if_off_line_pay, if_use,
               di.img_url, data_transfer_status, print_status, print_key, device_state, device_protocol,
               heart_beat_time, last_update_time, di.create_by, di.create_time, di.update_by, di.update_time,
               db.area_id, db.canteen_id, bc.canteen_name, db.stall_id, bs.stall_name,
               if((UNIX_TIMESTAMP() - di.last_update_time) > 120, '2','1' ) AS online_state,
               CONCAT(aaa.area_name, '/', ba.area_name) AS area_name,
               cr.recipe_name, crbd.recipe_id
        from device_info di
        left join device_bind db on di.device_id = db.device_id
        left join basic_area ba on db.area_id = ba.area_id
        left join basic_area aaa on ba.parent_id = aaa.area_id
        left join basic_canteen bc on db.canteen_id = bc.canteen_id
        left join basic_stall bs on db.stall_id = bs.stall_id
        left join cook_recipe_bind_device crbd on di.device_id = crbd.device_id
        left join cook_recipe cr on crbd.recipe_id = cr.recipe_id
    
    
    
    
    
    
    
    
    
        insert into device_info
        
            device_name,
            parent_id,
            parent_type,
            tenant_id,
            online_state,
            version_code,
            version_name,
            consume_mode,
            communicate_mode,
            device_ip,
            device_mask,
            device_mac,
            device_gateway,
            dns_primary,
            dns_backup,
            device_sn,
            device_number,
            device_model,
            device_type,
            device_pwd,
            device_addr,
            device_key,
            device_service_ip,
            device_service_port,
            if_quota_limit,
            if_discount,
            if_time_limit,
            if_use_call_num,
            if_off_line_pay,
            if_use,
            img_url,
            data_transfer_status,
            print_status,
            print_key,
            device_state,
            device_protocol,
            heart_beat_time,
            last_update_time,
            create_by,
            create_time,
            update_by,
            update_time,
         
        
            #{deviceName},
            #{parentId},
            #{parentType},
            #{tenantId},
            #{onlineState},
            #{versionCode},
            #{versionName},
            #{consumeMode},
            #{communicateMode},
            #{deviceIp},
            #{deviceMask},
            #{deviceMac},
            #{deviceGateway},
            #{dnsPrimary},
            #{dnsBackup},
            #{deviceSn},
            #{deviceNumber},
            #{deviceModel},
            #{deviceType},
            #{devicePwd},
            #{deviceAddr},
            #{deviceKey},
            #{deviceServiceIp},
            #{deviceServicePort},
            #{ifQuotaLimit},
            #{ifDiscount},
            #{ifTimeLimit},
            #{ifUseCallNum},
            #{ifOffLinePay},
            #{ifUse},
            #{imgUrl},
            #{dataTransferStatus},
            #{printStatus},
            #{printKey},
            #{deviceState},
            #{deviceProtocol},
            #{heartBeatTime},
            #{lastUpdateTime},
            #{createBy},
            #{createTime},
            #{updateBy},
            #{updateTime},
         
    
    
        insert into device_bind(device_id, area_id, canteen_id, stall_id,create_by, create_time)
        values (#{deviceId}, #{areaId}, #{canteenId}, #{stallId},
                #{createBy}, #{createTime})
    
    
        insert into cook_recipe_bind_device(device_id, canteen_id, stall_id,recipe_id,create_by, create_time)
        values (#{deviceId}, #{canteenId}, #{stallId},#{recipeId},
                #{createBy}, #{createTime})
    
    
            INSERT INTO kitchen_device_detection (
            yangpinbianhao, yangpinmingcheng, shanghumingcheng,
            jianceleixing_code, jiancexiangmu, jiancezhi,
            jiancejieguo, jiancejieguo_code, jianceren,
            lianxidianhua, jiancedidian, jianceriqi
            )
            VALUES
            
                (
                #{item.yangpinbianhao}, #{item.yangpinmingcheng}, #{item.shanghumingcheng},
                #{item.jianceleixingCode}, #{item.jiancexiangmu}, #{item.jiancezhi},
                #{item.jiancejieguo}, #{item.jiancejieguoCode}, #{item.jianceren},
                #{item.lianxidianhua}, #{item.jiancedidian}, #{item.jianceriqi}
                )
            
    
    
        update device_info
        
            device_name = #{deviceName},
            parent_id = #{parentId},
            parent_type = #{parentType},
            tenant_id = #{tenantId},
            online_state = #{onlineState},
            version_code = #{versionCode},
            version_name = #{versionName},
            consume_mode = #{consumeMode},
            communicate_mode = #{communicateMode},
            device_ip = #{deviceIp},
            device_mask = #{deviceMask},
            device_mac = #{deviceMac},
            device_gateway = #{deviceGateway},
            dns_primary = #{dnsPrimary},
            dns_backup = #{dnsBackup},
            device_sn = #{deviceSn},
            device_number = #{deviceNumber},
            device_model = #{deviceModel},
            device_type = #{deviceType},
            device_pwd = #{devicePwd},
            device_addr = #{deviceAddr},
            device_key = #{deviceKey},
            device_service_ip = #{deviceServiceIp},
            device_service_port = #{deviceServicePort},
            if_quota_limit = #{ifQuotaLimit},
            if_discount = #{ifDiscount},
            if_time_limit = #{ifTimeLimit},
            if_use_call_num = #{ifUseCallNum},
            if_off_line_pay = #{ifOffLinePay},
            if_use = #{ifUse},
            img_url = #{imgUrl},
            data_transfer_status = #{dataTransferStatus},
            print_status = #{printStatus},
            print_key = #{printKey},
            device_state = #{deviceState},
            device_protocol = #{deviceProtocol},
            heart_beat_time = #{heartBeatTime},
            last_update_time = #{lastUpdateTime},
            create_by = #{createBy},
            create_time = #{createTime},
            update_by = #{updateBy},
            update_time = #{updateTime},
        
        where device_id = #{deviceId}
    
    
        update device_bind
        
            area_id = #{areaId},
            canteen_id = #{canteenId},
            stall_id = #{stallId},
            update_by = #{updateBy},
            update_time = #{updateTime},
        
        where device_id = #{deviceId}
    
    
        update cook_recipe_bind_device
        
            canteen_id = #{canteenId},
            stall_id = #{stallId},
            recipe_id = #{recipeId},
            update_by = #{updateBy},
            update_time = #{updateTime},
        
        where device_id = #{deviceId}
    
    
        update device_info
        set last_update_time = unix_timestamp()
        where device_sn = #{sn}
    
    
        delete from device_info where device_id = #{deviceId}
    
    
        delete from device_info where device_id in
        
            #{deviceId}
        
    
    
        delete from device_bind where device_id in
        
            #{deviceId}
        
    
    
        delete from cook_recipe_bind_device where device_id in
        
            #{deviceId}
        
    
    
        update kitchen_device_info
        set last_update_time = unix_timestamp()
        where device_sn = #{sn}